Skip to content

Commit 9995c45

Browse files
authored
feat!: bump openjd crates for EXPR and WRAP_ACTIONS extension support (#306)
Signed-off-by: Jericho Tolentino <68654047+jericht@users.noreply.github.com>
1 parent 8eae8ae commit 9995c45

5 files changed

Lines changed: 92 additions & 18 deletions

File tree

Cargo.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

THIRD-PARTY-LICENSES.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2522,13 +2522,13 @@ limitations under the License.
25222522
** arraydeque; version 0.5.1 -- https://crates.io/crates/arraydeque
25232523
** get-size-derive2; version 0.7.4 -- https://crates.io/crates/get-size-derive2
25242524
** get-size2; version 0.7.4 -- https://crates.io/crates/get-size2
2525-
** granit-parser; version 0.0.2 -- https://crates.io/crates/granit-parser
2525+
** granit-parser; version 0.0.3 -- https://crates.io/crates/granit-parser
25262526
** itoa; version 1.0.18 -- https://crates.io/crates/itoa
25272527
** libc; version 0.2.186 -- https://crates.io/crates/libc
25282528
** manyhow-macros; version 0.11.4 -- https://crates.io/crates/manyhow-macros
25292529
** openjd-expr; version 0.1.2 -- https://crates.io/crates/openjd-expr
2530-
** openjd-model; version 0.2.1 -- https://crates.io/crates/openjd-model
2531-
** openjd-sessions; version 0.2.3 -- https://crates.io/crates/openjd-sessions
2530+
** openjd-model; version 0.3.0 -- https://crates.io/crates/openjd-model
2531+
** openjd-sessions; version 0.3.1 -- https://crates.io/crates/openjd-sessions
25322532
** pin-project-lite; version 0.2.17 -- https://crates.io/crates/pin-project-lite
25332533
** portable-atomic; version 1.13.1 -- https://crates.io/crates/portable-atomic
25342534
** proc-macro2; version 1.0.106 -- https://crates.io/crates/proc-macro2
@@ -2542,7 +2542,7 @@ limitations under the License.
25422542
** rustc-hash; version 2.1.2 -- https://crates.io/crates/rustc-hash
25432543
** rustversion; version 1.0.22 -- https://crates.io/crates/rustversion
25442544
** ryu; version 1.0.23 -- https://crates.io/crates/ryu
2545-
** serde-saphyr; version 0.0.26 -- https://crates.io/crates/serde-saphyr
2545+
** serde-saphyr; version 0.0.27 -- https://crates.io/crates/serde-saphyr
25462546
** serde; version 1.0.228 -- https://crates.io/crates/serde
25472547
** serde_core; version 1.0.228 -- https://crates.io/crates/serde_core
25482548
** serde_derive; version 1.0.228 -- https://crates.io/crates/serde_derive

rust-bindings/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ crate-type = ["cdylib", "rlib"]
1313

1414
[dependencies]
1515
openjd-expr = "0.1.2"
16-
openjd-model = "0.2.1"
17-
openjd-sessions = "0.2.3"
16+
openjd-model = "0.3.0"
17+
openjd-sessions = "0.3.1"
1818
tokio = { version = "1", features = ["rt-multi-thread"] }
1919
uuid = { version = "1", features = ["v4"] }
2020
serde_json = "1"

rust-bindings/src/model/template_types.rs

Lines changed: 65 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -325,17 +325,30 @@ impl PyEnvironmentActions {
325325
/// schema. If both flavours of the same field are passed, the
326326
/// snake-case form wins.
327327
#[new]
328-
#[pyo3(signature = (*, on_enter=None, on_exit=None, onEnter=None, onExit=None))]
328+
#[allow(clippy::too_many_arguments)]
329+
#[pyo3(signature = (*, on_enter=None, on_exit=None, on_wrap_env_enter=None, on_wrap_task_run=None, on_wrap_env_exit=None, onEnter=None, onExit=None, onWrapEnvEnter=None, onWrapTaskRun=None, onWrapEnvExit=None))]
329330
fn new(
330331
on_enter: Option<PyAction>,
331332
on_exit: Option<PyAction>,
333+
on_wrap_env_enter: Option<PyAction>,
334+
on_wrap_task_run: Option<PyAction>,
335+
on_wrap_env_exit: Option<PyAction>,
332336
#[allow(non_snake_case)] onEnter: Option<PyAction>,
333337
#[allow(non_snake_case)] onExit: Option<PyAction>,
338+
#[allow(non_snake_case)] onWrapEnvEnter: Option<PyAction>,
339+
#[allow(non_snake_case)] onWrapTaskRun: Option<PyAction>,
340+
#[allow(non_snake_case)] onWrapEnvExit: Option<PyAction>,
334341
) -> Self {
335342
let on_enter = on_enter.or(onEnter);
336343
let on_exit = on_exit.or(onExit);
344+
let on_wrap_env_enter = on_wrap_env_enter.or(onWrapEnvEnter);
345+
let on_wrap_task_run = on_wrap_task_run.or(onWrapTaskRun);
346+
let on_wrap_env_exit = on_wrap_env_exit.or(onWrapEnvExit);
337347
PyEnvironmentActions {
338348
inner: EnvironmentActions {
349+
on_wrap_env_enter: on_wrap_env_enter.map(|a| a.inner),
350+
on_wrap_task_run: on_wrap_task_run.map(|a| a.inner),
351+
on_wrap_env_exit: on_wrap_env_exit.map(|a| a.inner),
339352
on_enter: on_enter.map(|a| a.inner),
340353
on_exit: on_exit.map(|a| a.inner),
341354
},
@@ -370,6 +383,48 @@ impl PyEnvironmentActions {
370383
self.on_exit()
371384
}
372385

386+
#[getter]
387+
fn on_wrap_env_enter(&self) -> Option<PyAction> {
388+
self.inner
389+
.on_wrap_env_enter
390+
.as_ref()
391+
.map(|a| PyAction { inner: a.clone() })
392+
}
393+
394+
#[getter]
395+
#[pyo3(name = "onWrapEnvEnter")]
396+
fn on_wrap_env_enter_camel(&self) -> Option<PyAction> {
397+
self.on_wrap_env_enter()
398+
}
399+
400+
#[getter]
401+
fn on_wrap_task_run(&self) -> Option<PyAction> {
402+
self.inner
403+
.on_wrap_task_run
404+
.as_ref()
405+
.map(|a| PyAction { inner: a.clone() })
406+
}
407+
408+
#[getter]
409+
#[pyo3(name = "onWrapTaskRun")]
410+
fn on_wrap_task_run_camel(&self) -> Option<PyAction> {
411+
self.on_wrap_task_run()
412+
}
413+
414+
#[getter]
415+
fn on_wrap_env_exit(&self) -> Option<PyAction> {
416+
self.inner
417+
.on_wrap_env_exit
418+
.as_ref()
419+
.map(|a| PyAction { inner: a.clone() })
420+
}
421+
422+
#[getter]
423+
#[pyo3(name = "onWrapEnvExit")]
424+
fn on_wrap_env_exit_camel(&self) -> Option<PyAction> {
425+
self.on_wrap_env_exit()
426+
}
427+
373428
fn __repr__(&self) -> String {
374429
format!(
375430
"EnvironmentActions(on_enter={}, on_exit={})",
@@ -398,6 +453,15 @@ impl PyEnvironmentActions {
398453
if let Some(a) = slf.on_exit() {
399454
kwargs.set_item("on_exit", a)?;
400455
}
456+
if let Some(a) = slf.on_wrap_env_enter() {
457+
kwargs.set_item("on_wrap_env_enter", a)?;
458+
}
459+
if let Some(a) = slf.on_wrap_task_run() {
460+
kwargs.set_item("on_wrap_task_run", a)?;
461+
}
462+
if let Some(a) = slf.on_wrap_env_exit() {
463+
kwargs.set_item("on_wrap_env_exit", a)?;
464+
}
401465
let cls = py.get_type::<PyEnvironmentActions>();
402466
let args = PyTuple::new(py, [cls.into_any(), kwargs.into_any()])?;
403467
Ok((helper, args.into()))

rust-bindings/src/sessions/session.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -539,15 +539,20 @@ impl PySession {
539539
}
540540

541541
/// Run a task. Non-blocking — spawns the onRun action on a background thread.
542-
#[pyo3(signature = (*, step_script, task_parameter_values=None, resolved_symtab=None, os_env_vars=None))]
542+
///
543+
/// `step_name` is surfaced as `WrappedStep.Name` to a wrapping environment's
544+
/// `onWrapTaskRun` hook (RFC 0008).
545+
#[pyo3(signature = (*, step_script, step_name="", task_parameter_values=None, resolved_symtab=None, os_env_vars=None))]
543546
fn run_task(
544547
&self,
545548
step_script: &PyStepScript,
549+
step_name: &str,
546550
task_parameter_values: Option<&Bound<'_, PyDict>>,
547551
resolved_symtab: Option<&crate::expr::PySerializedSymbolTable>,
548552
os_env_vars: Option<HashMap<String, String>>,
549553
) -> PyResult<()> {
550554
let script = step_script.inner.clone();
555+
let step_name = step_name.to_owned();
551556
let task_params = match task_parameter_values {
552557
Some(d) => Some(extract_task_parameter_values(d)?),
553558
None => None,
@@ -573,8 +578,13 @@ impl PySession {
573578
run_action(session, session_arc, snapshot, move |rt, session| {
574579
let env_ref = os_env_vars.as_ref();
575580
let task_ref = task_params.as_ref();
576-
let _ =
577-
rt.block_on(session.run_task(&script, task_ref, resolved.as_ref(), env_ref));
581+
let _ = rt.block_on(session.run_task(
582+
&step_name,
583+
&script,
584+
task_ref,
585+
resolved.as_ref(),
586+
env_ref,
587+
));
578588
});
579589
});
580590

0 commit comments

Comments
 (0)