@@ -56,7 +56,7 @@ pub fn possible_store_missing_digest(e: store::StoreError) -> PyErr {
5656 failure. into ( )
5757}
5858
59- #[ pyclass( name = "Digest" ) ]
59+ #[ pyclass( name = "Digest" , from_py_object ) ]
6060#[ derive( Clone , Debug , PartialEq , Eq ) ]
6161pub struct PyDigest ( pub DirectoryDigest ) ;
6262
@@ -114,7 +114,7 @@ impl PyDigest {
114114 }
115115}
116116
117- #[ pyclass( name = "FileDigest" ) ]
117+ #[ pyclass( name = "FileDigest" , from_py_object ) ]
118118#[ derive( Debug , Clone , PartialEq , Eq ) ]
119119pub struct PyFileDigest ( pub Digest ) ;
120120
@@ -501,7 +501,12 @@ impl PyFilespecMatcher {
501501// -----------------------------------------------------------------------------
502502
503503/// The kind of path (e.g., file, directory, symlink) as identified in `PathMetadata`
504- #[ pyclass( name = "PathMetadataKind" , rename_all = "UPPERCASE" , eq) ]
504+ #[ pyclass(
505+ name = "PathMetadataKind" ,
506+ rename_all = "UPPERCASE" ,
507+ eq,
508+ from_py_object
509+ ) ]
505510#[ derive( Clone , Copy , Debug , Eq , PartialEq ) ]
506511pub enum PyPathMetadataKind {
507512 File ,
@@ -530,7 +535,7 @@ impl From<PyPathMetadataKind> for fs::PathMetadataKind {
530535}
531536
532537/// Expanded version of `Stat` when access to additional filesystem attributes is necessary.
533- #[ pyclass( name = "PathMetadata" ) ]
538+ #[ pyclass( name = "PathMetadata" , from_py_object ) ]
534539#[ derive( Clone , Debug , Eq , PartialEq ) ]
535540pub struct PyPathMetadata ( pub fs:: PathMetadata ) ;
536541
@@ -652,7 +657,14 @@ impl PyPathMetadata {
652657}
653658
654659/// The path's namespace (to separate buildroot and system paths)
655- #[ pyclass( name = "PathNamespace" , rename_all = "UPPERCASE" , frozen, eq, hash) ]
660+ #[ pyclass(
661+ name = "PathNamespace" ,
662+ rename_all = "UPPERCASE" ,
663+ frozen,
664+ eq,
665+ hash,
666+ from_py_object
667+ ) ]
656668#[ derive( Clone , Copy , Debug , Eq , PartialEq , Hash ) ]
657669pub enum PyPathNamespace {
658670 Workspace ,
0 commit comments