@@ -554,19 +554,83 @@ def get_dandiset(
554
554
return d .for_version (version_id )
555
555
return d
556
556
557
- def get_dandisets (self ) -> Iterator [RemoteDandiset ]:
557
+ def get_dandisets (
558
+ self ,
559
+ * ,
560
+ draft : bool | None = None ,
561
+ embargoed : bool | None = None ,
562
+ empty : bool | None = None ,
563
+ mine : bool | None = None ,
564
+ order : str | None = None ,
565
+ search : str | None = None ,
566
+ ) -> Iterator [RemoteDandiset ]:
558
567
"""
559
568
Returns a generator of all Dandisets on the server. For each Dandiset,
560
569
the `RemoteDandiset`'s version is set to the most recent published
561
570
version if there is one, otherwise to the draft version.
562
- """
563
- for data in self .paginate ("/dandisets/" ):
571
+
572
+ .. versionchanged:: 0.61.0
573
+
574
+ ``draft``, ``embargoed``, ``empty``, ``mine``, ``order``, and
575
+ ``search`` parameters added
576
+
577
+ :param draft:
578
+ If true, Dandisets that have only draft versions (i.e., that
579
+ haven't yet been published) will be included in the results
580
+ (default true)
581
+
582
+ :param embargoed:
583
+ If true, embargoed Dandisets will be included in the results
584
+ (default false)
585
+
586
+ :param empty:
587
+ If true, empty Dandisets will be included in the results (default
588
+ true)
589
+
590
+ :param mine:
591
+ If true, only Dandisets owned by the authenticated user will be
592
+ retrieved (default false)
593
+
594
+ :param order:
595
+ The field to sort the results by. The accepted field names are
596
+ ``"id"``, ``"name"``, ``"modified"``, and ``"size"``. Prepend a
597
+ hyphen to the field name to reverse the sort order.
598
+
599
+ :param search:
600
+ A search string to filter the returned Dandisets by. The string is
601
+ searched for in the metadata of Dandiset versions.
602
+ """
603
+ for data in self .paginate (
604
+ "/dandisets/" ,
605
+ params = {
606
+ "draft" : draft ,
607
+ "embargoed" : embargoed ,
608
+ "empty" : empty ,
609
+ "ordering" : order ,
610
+ "search" : search ,
611
+ "user" : "me" if mine else None ,
612
+ },
613
+ ):
564
614
yield RemoteDandiset .from_data (self , data )
565
615
566
- def create_dandiset (self , name : str , metadata : dict [str , Any ]) -> RemoteDandiset :
567
- """Creates a Dandiset with the given name & metadata"""
616
+ def create_dandiset (
617
+ self , name : str , metadata : dict [str , Any ], * , embargo : bool = False
618
+ ) -> RemoteDandiset :
619
+ """
620
+ Creates a Dandiset with the given name & metadata. If ``embargo`` is
621
+ `True`, the resulting Dandiset will be embargoed.
622
+
623
+ .. versionchanged:: 0.61.0
624
+
625
+ ``embargo`` argument added
626
+ """
568
627
return RemoteDandiset .from_data (
569
- self , self .post ("/dandisets/" , json = {"name" : name , "metadata" : metadata })
628
+ self ,
629
+ self .post (
630
+ "/dandisets/" ,
631
+ json = {"name" : name , "metadata" : metadata },
632
+ params = {"embargo" : "true" if embargo else "false" },
633
+ ),
570
634
)
571
635
572
636
def check_schema_version (self , schema_version : str | None = None ) -> None :
0 commit comments