@@ -90,7 +90,7 @@ impl WorkspaceMetadata {
90
90
pyproject,
91
91
ancestor. to_path_buf ( ) ,
92
92
base_configuration,
93
- ) ? ;
93
+ ) ;
94
94
95
95
if let Some ( workspace_table) = workspace_table {
96
96
let workspace_root = ancestor;
@@ -168,7 +168,7 @@ impl WorkspaceMetadata {
168
168
169
169
// Create a package with a default configuration
170
170
PackageMetadata {
171
- name : path. file_name ( ) . unwrap_or ( "<virtual> " ) . into ( ) ,
171
+ name : path. file_name ( ) . unwrap_or ( "root " ) . into ( ) ,
172
172
root : path. to_path_buf ( ) ,
173
173
// TODO create the configuration from the pyproject toml
174
174
configuration : base_configuration. cloned ( ) . unwrap_or_default ( ) ,
@@ -206,14 +206,11 @@ impl PackageMetadata {
206
206
pyproject : PyProject ,
207
207
root : SystemPathBuf ,
208
208
base_configuration : Option < & Configuration > ,
209
- ) -> Result < Self , WorkspaceDiscoveryError > {
210
- let Some ( project) = pyproject. project else {
211
- return Err ( WorkspaceDiscoveryError :: MissingProjectTable { package_path : root } ) ;
212
- } ;
213
-
214
- let Some ( name) = project. name . as_ref ( ) else {
215
- return Err ( WorkspaceDiscoveryError :: MissingPackageName { package_path : root } ) ;
216
- } ;
209
+ ) -> Self {
210
+ let name = pyproject. project . and_then ( |project| project. name ) ;
211
+ let name = name
212
+ . map ( |name| Name :: new ( & * name) )
213
+ . unwrap_or_else ( || Name :: new ( root. file_name ( ) . unwrap_or ( "root" ) ) ) ;
217
214
218
215
// TODO: load configuration from pyrpoject.toml
219
216
let mut configuration = Configuration :: default ( ) ;
@@ -222,11 +219,11 @@ impl PackageMetadata {
222
219
configuration. extend ( base_configuration. clone ( ) ) ;
223
220
}
224
221
225
- Ok ( PackageMetadata {
226
- name : Name :: from ( name . as_str ( ) ) ,
222
+ PackageMetadata {
223
+ name,
227
224
root,
228
225
configuration,
229
- } )
226
+ }
230
227
}
231
228
232
229
pub fn name ( & self ) -> & Name {
@@ -341,7 +338,7 @@ fn collect_packages(
341
338
} ) ;
342
339
}
343
340
344
- let package = PackageMetadata :: from_pyproject ( pyproject, member_path, base_configuration) ? ;
341
+ let package = PackageMetadata :: from_pyproject ( pyproject, member_path, base_configuration) ;
345
342
346
343
tracing:: debug!(
347
344
"Adding package '{}' at '{}'" ,
@@ -407,12 +404,6 @@ pub enum WorkspaceDiscoveryError {
407
404
#[ from]
408
405
error : GlobError ,
409
406
} ,
410
-
411
- #[ error( "the `[project]` is missing in the `pyproject.toml` for package '{package_path}'`" ) ]
412
- MissingProjectTable { package_path : SystemPathBuf } ,
413
-
414
- #[ error( "the `project.name` is missing in the `pyproject.toml` for package '{package_path}'`" ) ]
415
- MissingPackageName { package_path : SystemPathBuf } ,
416
407
}
417
408
418
409
#[ cfg( test) ]
@@ -433,7 +424,7 @@ mod tests {
433
424
434
425
system
435
426
. memory_file_system ( )
436
- . write_files ( [ ( root. join ( "src/ foo.py" ) , "" ) , ( root. join ( "src/ bar.py" ) , "" ) ] )
427
+ . write_files ( [ ( root. join ( "foo.py" ) , "" ) , ( root. join ( "bar.py" ) , "" ) ] )
437
428
. context ( "Failed to write files" ) ?;
438
429
439
430
let workspace = WorkspaceMetadata :: discover ( & root, & system, None )
@@ -454,15 +445,14 @@ mod tests {
454
445
system
455
446
. memory_file_system ( )
456
447
. write_files ( [
457
- ( root. join ( "src/foo.py" ) , "" ) ,
458
- ( root. join ( "src/bar.py" ) , "" ) ,
459
448
(
460
449
root. join ( "pyproject.toml" ) ,
461
450
r#"
462
451
[project]
463
452
name = "backend"
464
453
"# ,
465
454
) ,
455
+ ( root. join ( "db/__init__.py" ) , "" ) ,
466
456
] )
467
457
. context ( "Failed to write files" ) ?;
468
458
@@ -473,7 +463,7 @@ mod tests {
473
463
snapshot_workspace ! ( workspace) ;
474
464
475
465
// Discovering the same package from a subdirectory should give the same result
476
- let from_src = WorkspaceMetadata :: discover ( & root. join ( "src " ) , & system, None )
466
+ let from_src = WorkspaceMetadata :: discover ( & root. join ( "db " ) , & system, None )
477
467
. context ( "Failed to discover workspace from src sub-directory" ) ?;
478
468
479
469
assert_eq ! ( from_src, workspace) ;
@@ -489,8 +479,6 @@ mod tests {
489
479
system
490
480
. memory_file_system ( )
491
481
. write_files ( [
492
- ( root. join ( "src/foo.py" ) , "" ) ,
493
- ( root. join ( "src/bar.py" ) , "" ) ,
494
482
(
495
483
root. join ( "pyproject.toml" ) ,
496
484
r#"
@@ -543,8 +531,6 @@ mod tests {
543
531
system
544
532
. memory_file_system ( )
545
533
. write_files ( [
546
- ( root. join ( "src/foo.py" ) , "" ) ,
547
- ( root. join ( "src/bar.py" ) , "" ) ,
548
534
(
549
535
root. join ( "pyproject.toml" ) ,
550
536
r#"
@@ -597,8 +583,6 @@ mod tests {
597
583
system
598
584
. memory_file_system ( )
599
585
. write_files ( [
600
- ( root. join ( "src/foo.py" ) , "" ) ,
601
- ( root. join ( "src/bar.py" ) , "" ) ,
602
586
(
603
587
root. join ( "pyproject.toml" ) ,
604
588
r#"
@@ -643,8 +627,6 @@ mod tests {
643
627
system
644
628
. memory_file_system ( )
645
629
. write_files ( [
646
- ( root. join ( "src/foo.py" ) , "" ) ,
647
- ( root. join ( "src/bar.py" ) , "" ) ,
648
630
(
649
631
root. join ( "pyproject.toml" ) ,
650
632
r#"
@@ -685,8 +667,6 @@ mod tests {
685
667
system
686
668
. memory_file_system ( )
687
669
. write_files ( [
688
- ( root. join ( "src/foo.py" ) , "" ) ,
689
- ( root. join ( "src/bar.py" ) , "" ) ,
690
670
(
691
671
root. join ( "pyproject.toml" ) ,
692
672
r#"
@@ -721,8 +701,6 @@ mod tests {
721
701
system
722
702
. memory_file_system ( )
723
703
. write_files ( [
724
- ( root. join ( "src/foo.py" ) , "" ) ,
725
- ( root. join ( "src/bar.py" ) , "" ) ,
726
704
(
727
705
root. join ( "pyproject.toml" ) ,
728
706
r#"
@@ -752,8 +730,6 @@ mod tests {
752
730
system
753
731
. memory_file_system ( )
754
732
. write_files ( [
755
- ( root. join ( "src/foo.py" ) , "" ) ,
756
- ( root. join ( "src/bar.py" ) , "" ) ,
757
733
(
758
734
root. join ( "pyproject.toml" ) ,
759
735
r#"
@@ -783,8 +759,6 @@ mod tests {
783
759
system
784
760
. memory_file_system ( )
785
761
. write_files ( [
786
- ( root. join ( "src/foo.py" ) , "" ) ,
787
- ( root. join ( "src/bar.py" ) , "" ) ,
788
762
(
789
763
root. join ( "pyproject.toml" ) ,
790
764
r#"
0 commit comments