projen 0.81.17__py3-none-any.whl → 0.98.25__py3-none-any.whl

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.
projen/build/__init__.py CHANGED
@@ -11,7 +11,22 @@ import jsii
11
11
  import publication
12
12
  import typing_extensions
13
13
 
14
- from typeguard import check_type
14
+ import typeguard
15
+ from importlib.metadata import version as _metadata_package_version
16
+ TYPEGUARD_MAJOR_VERSION = int(_metadata_package_version('typeguard').split('.')[0])
17
+
18
+ def check_type(argname: str, value: object, expected_type: typing.Any) -> typing.Any:
19
+ if TYPEGUARD_MAJOR_VERSION <= 2:
20
+ return typeguard.check_type(argname=argname, value=value, expected_type=expected_type) # type:ignore
21
+ else:
22
+ if isinstance(value, jsii._reference_map.InterfaceDynamicProxy): # pyright: ignore [reportAttributeAccessIssue]
23
+ pass
24
+ else:
25
+ if TYPEGUARD_MAJOR_VERSION == 3:
26
+ typeguard.config.collection_check_strategy = typeguard.CollectionCheckStrategy.ALL_ITEMS # type:ignore
27
+ typeguard.check_type(value=value, expected_type=expected_type) # type:ignore
28
+ else:
29
+ typeguard.check_type(value=value, expected_type=expected_type, collection_check_strategy=typeguard.CollectionCheckStrategy.ALL_ITEMS) # type:ignore
15
30
 
16
31
  from .._jsii import *
17
32
 
@@ -258,15 +273,15 @@ class BuildWorkflow(
258
273
  self,
259
274
  project: _Project_57d89203,
260
275
  *,
261
- artifacts_directory: builtins.str,
262
276
  build_task: _Task_9fa875b6,
277
+ artifacts_directory: typing.Optional[builtins.str] = None,
263
278
  container_image: typing.Optional[builtins.str] = None,
264
- env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
265
279
  git_identity: typing.Optional[typing.Union[_GitIdentity_6effc3de, typing.Dict[builtins.str, typing.Any]]] = None,
266
280
  mutable_build: typing.Optional[builtins.bool] = None,
267
281
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
268
282
  runs_on: typing.Optional[typing.Sequence[builtins.str]] = None,
269
283
  runs_on_group: typing.Optional[typing.Union[_GroupRunnerOptions_148c59c1, typing.Dict[builtins.str, typing.Any]]] = None,
284
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
270
285
  name: typing.Optional[builtins.str] = None,
271
286
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
272
287
  pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -274,15 +289,15 @@ class BuildWorkflow(
274
289
  ) -> None:
275
290
  '''
276
291
  :param project: -
277
- :param artifacts_directory: (experimental) A name of a directory that includes build artifacts.
278
292
  :param build_task: (experimental) The task to execute in order to build the project.
293
+ :param artifacts_directory: (experimental) A name of a directory that includes build artifacts. Default: "dist"
279
294
  :param container_image: (experimental) The container image to use for builds. Default: - the default workflow container
280
- :param env: (experimental) Build environment variables. Default: {}
281
- :param git_identity: (experimental) Git identity to use for the workflow. Default: - default identity
295
+ :param git_identity: (experimental) Git identity to use for the workflow. Default: - default GitHub Actions user
282
296
  :param mutable_build: (experimental) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. This is enabled by default only if ``githubTokenSecret`` is set. Otherwise it is disabled, which implies that file changes that happen during build will not be pushed back to the branch. Default: true
283
297
  :param post_build_steps: (experimental) Steps to execute after build. Default: []
284
298
  :param runs_on: (experimental) Github Runner selection labels. Default: ["ubuntu-latest"]
285
299
  :param runs_on_group: (experimental) Github Runner Group selection options.
300
+ :param env: (experimental) Build environment variables. Default: {}
286
301
  :param name: (experimental) Name of the buildfile (e.g. "build" becomes "build.yml"). Default: "build"
287
302
  :param permissions: (experimental) Permissions granted to the build job To limit job permissions for ``contents``, the desired permissions have to be explicitly set, e.g.: ``{ contents: JobPermission.NONE }``. Default: ``{ contents: JobPermission.WRITE }``
288
303
  :param pre_build_steps: (experimental) Steps to execute before the build. Default: []
@@ -294,15 +309,15 @@ class BuildWorkflow(
294
309
  type_hints = typing.get_type_hints(_typecheckingstub__f4d192684ec38f19e56855947a401da7aa8d483beaeef832704f28ff43d5ffe5)
295
310
  check_type(argname="argument project", value=project, expected_type=type_hints["project"])
296
311
  options = BuildWorkflowOptions(
297
- artifacts_directory=artifacts_directory,
298
312
  build_task=build_task,
313
+ artifacts_directory=artifacts_directory,
299
314
  container_image=container_image,
300
- env=env,
301
315
  git_identity=git_identity,
302
316
  mutable_build=mutable_build,
303
317
  post_build_steps=post_build_steps,
304
318
  runs_on=runs_on,
305
319
  runs_on_group=runs_on_group,
320
+ env=env,
306
321
  name=name,
307
322
  permissions=permissions,
308
323
  pre_build_steps=pre_build_steps,
@@ -501,6 +516,7 @@ class BuildWorkflow(
501
516
  jsii_type="projen.build.BuildWorkflowCommonOptions",
502
517
  jsii_struct_bases=[],
503
518
  name_mapping={
519
+ "env": "env",
504
520
  "name": "name",
505
521
  "permissions": "permissions",
506
522
  "pre_build_steps": "preBuildSteps",
@@ -511,12 +527,14 @@ class BuildWorkflowCommonOptions:
511
527
  def __init__(
512
528
  self,
513
529
  *,
530
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
514
531
  name: typing.Optional[builtins.str] = None,
515
532
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
516
533
  pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
517
534
  workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
518
535
  ) -> None:
519
536
  '''
537
+ :param env: (experimental) Build environment variables. Default: {}
520
538
  :param name: (experimental) Name of the buildfile (e.g. "build" becomes "build.yml"). Default: "build"
521
539
  :param permissions: (experimental) Permissions granted to the build job To limit job permissions for ``contents``, the desired permissions have to be explicitly set, e.g.: ``{ contents: JobPermission.NONE }``. Default: ``{ contents: JobPermission.WRITE }``
522
540
  :param pre_build_steps: (experimental) Steps to execute before the build. Default: []
@@ -530,11 +548,14 @@ class BuildWorkflowCommonOptions:
530
548
  workflow_triggers = _Triggers_e9ae7617(**workflow_triggers)
531
549
  if __debug__:
532
550
  type_hints = typing.get_type_hints(_typecheckingstub__c47ecd67d7b1fa42db0bfe937571471191786b92fd702c85fceb89eb2d1b05c5)
551
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
533
552
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
534
553
  check_type(argname="argument permissions", value=permissions, expected_type=type_hints["permissions"])
535
554
  check_type(argname="argument pre_build_steps", value=pre_build_steps, expected_type=type_hints["pre_build_steps"])
536
555
  check_type(argname="argument workflow_triggers", value=workflow_triggers, expected_type=type_hints["workflow_triggers"])
537
556
  self._values: typing.Dict[builtins.str, typing.Any] = {}
557
+ if env is not None:
558
+ self._values["env"] = env
538
559
  if name is not None:
539
560
  self._values["name"] = name
540
561
  if permissions is not None:
@@ -544,6 +565,17 @@ class BuildWorkflowCommonOptions:
544
565
  if workflow_triggers is not None:
545
566
  self._values["workflow_triggers"] = workflow_triggers
546
567
 
568
+ @builtins.property
569
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
570
+ '''(experimental) Build environment variables.
571
+
572
+ :default: {}
573
+
574
+ :stability: experimental
575
+ '''
576
+ result = self._values.get("env")
577
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
578
+
547
579
  @builtins.property
548
580
  def name(self) -> typing.Optional[builtins.str]:
549
581
  '''(experimental) Name of the buildfile (e.g. "build" becomes "build.yml").
@@ -604,14 +636,14 @@ class BuildWorkflowCommonOptions:
604
636
  jsii_type="projen.build.BuildWorkflowOptions",
605
637
  jsii_struct_bases=[BuildWorkflowCommonOptions],
606
638
  name_mapping={
639
+ "env": "env",
607
640
  "name": "name",
608
641
  "permissions": "permissions",
609
642
  "pre_build_steps": "preBuildSteps",
610
643
  "workflow_triggers": "workflowTriggers",
611
- "artifacts_directory": "artifactsDirectory",
612
644
  "build_task": "buildTask",
645
+ "artifacts_directory": "artifactsDirectory",
613
646
  "container_image": "containerImage",
614
- "env": "env",
615
647
  "git_identity": "gitIdentity",
616
648
  "mutable_build": "mutableBuild",
617
649
  "post_build_steps": "postBuildSteps",
@@ -623,14 +655,14 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
623
655
  def __init__(
624
656
  self,
625
657
  *,
658
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
626
659
  name: typing.Optional[builtins.str] = None,
627
660
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
628
661
  pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
629
662
  workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
630
- artifacts_directory: builtins.str,
631
663
  build_task: _Task_9fa875b6,
664
+ artifacts_directory: typing.Optional[builtins.str] = None,
632
665
  container_image: typing.Optional[builtins.str] = None,
633
- env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
634
666
  git_identity: typing.Optional[typing.Union[_GitIdentity_6effc3de, typing.Dict[builtins.str, typing.Any]]] = None,
635
667
  mutable_build: typing.Optional[builtins.bool] = None,
636
668
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -638,15 +670,15 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
638
670
  runs_on_group: typing.Optional[typing.Union[_GroupRunnerOptions_148c59c1, typing.Dict[builtins.str, typing.Any]]] = None,
639
671
  ) -> None:
640
672
  '''
673
+ :param env: (experimental) Build environment variables. Default: {}
641
674
  :param name: (experimental) Name of the buildfile (e.g. "build" becomes "build.yml"). Default: "build"
642
675
  :param permissions: (experimental) Permissions granted to the build job To limit job permissions for ``contents``, the desired permissions have to be explicitly set, e.g.: ``{ contents: JobPermission.NONE }``. Default: ``{ contents: JobPermission.WRITE }``
643
676
  :param pre_build_steps: (experimental) Steps to execute before the build. Default: []
644
677
  :param workflow_triggers: (experimental) Build workflow triggers. Default: "{ pullRequest: {}, workflowDispatch: {} }"
645
- :param artifacts_directory: (experimental) A name of a directory that includes build artifacts.
646
678
  :param build_task: (experimental) The task to execute in order to build the project.
679
+ :param artifacts_directory: (experimental) A name of a directory that includes build artifacts. Default: "dist"
647
680
  :param container_image: (experimental) The container image to use for builds. Default: - the default workflow container
648
- :param env: (experimental) Build environment variables. Default: {}
649
- :param git_identity: (experimental) Git identity to use for the workflow. Default: - default identity
681
+ :param git_identity: (experimental) Git identity to use for the workflow. Default: - default GitHub Actions user
650
682
  :param mutable_build: (experimental) Automatically update files modified during builds to pull-request branches. This means that any files synthesized by projen or e.g. test snapshots will always be up-to-date before a PR is merged. Implies that PR builds do not have anti-tamper checks. This is enabled by default only if ``githubTokenSecret`` is set. Otherwise it is disabled, which implies that file changes that happen during build will not be pushed back to the branch. Default: true
651
683
  :param post_build_steps: (experimental) Steps to execute after build. Default: []
652
684
  :param runs_on: (experimental) Github Runner selection labels. Default: ["ubuntu-latest"]
@@ -664,23 +696,24 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
664
696
  runs_on_group = _GroupRunnerOptions_148c59c1(**runs_on_group)
665
697
  if __debug__:
666
698
  type_hints = typing.get_type_hints(_typecheckingstub__9d08c9df51ed0147527f9d30b5f0f37c5e4482b10a1ea4f55a14885626d0721e)
699
+ check_type(argname="argument env", value=env, expected_type=type_hints["env"])
667
700
  check_type(argname="argument name", value=name, expected_type=type_hints["name"])
668
701
  check_type(argname="argument permissions", value=permissions, expected_type=type_hints["permissions"])
669
702
  check_type(argname="argument pre_build_steps", value=pre_build_steps, expected_type=type_hints["pre_build_steps"])
670
703
  check_type(argname="argument workflow_triggers", value=workflow_triggers, expected_type=type_hints["workflow_triggers"])
671
- check_type(argname="argument artifacts_directory", value=artifacts_directory, expected_type=type_hints["artifacts_directory"])
672
704
  check_type(argname="argument build_task", value=build_task, expected_type=type_hints["build_task"])
705
+ check_type(argname="argument artifacts_directory", value=artifacts_directory, expected_type=type_hints["artifacts_directory"])
673
706
  check_type(argname="argument container_image", value=container_image, expected_type=type_hints["container_image"])
674
- check_type(argname="argument env", value=env, expected_type=type_hints["env"])
675
707
  check_type(argname="argument git_identity", value=git_identity, expected_type=type_hints["git_identity"])
676
708
  check_type(argname="argument mutable_build", value=mutable_build, expected_type=type_hints["mutable_build"])
677
709
  check_type(argname="argument post_build_steps", value=post_build_steps, expected_type=type_hints["post_build_steps"])
678
710
  check_type(argname="argument runs_on", value=runs_on, expected_type=type_hints["runs_on"])
679
711
  check_type(argname="argument runs_on_group", value=runs_on_group, expected_type=type_hints["runs_on_group"])
680
712
  self._values: typing.Dict[builtins.str, typing.Any] = {
681
- "artifacts_directory": artifacts_directory,
682
713
  "build_task": build_task,
683
714
  }
715
+ if env is not None:
716
+ self._values["env"] = env
684
717
  if name is not None:
685
718
  self._values["name"] = name
686
719
  if permissions is not None:
@@ -689,10 +722,10 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
689
722
  self._values["pre_build_steps"] = pre_build_steps
690
723
  if workflow_triggers is not None:
691
724
  self._values["workflow_triggers"] = workflow_triggers
725
+ if artifacts_directory is not None:
726
+ self._values["artifacts_directory"] = artifacts_directory
692
727
  if container_image is not None:
693
728
  self._values["container_image"] = container_image
694
- if env is not None:
695
- self._values["env"] = env
696
729
  if git_identity is not None:
697
730
  self._values["git_identity"] = git_identity
698
731
  if mutable_build is not None:
@@ -704,6 +737,17 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
704
737
  if runs_on_group is not None:
705
738
  self._values["runs_on_group"] = runs_on_group
706
739
 
740
+ @builtins.property
741
+ def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
742
+ '''(experimental) Build environment variables.
743
+
744
+ :default: {}
745
+
746
+ :stability: experimental
747
+ '''
748
+ result = self._values.get("env")
749
+ return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
750
+
707
751
  @builtins.property
708
752
  def name(self) -> typing.Optional[builtins.str]:
709
753
  '''(experimental) Name of the buildfile (e.g. "build" becomes "build.yml").
@@ -748,16 +792,6 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
748
792
  result = self._values.get("workflow_triggers")
749
793
  return typing.cast(typing.Optional[_Triggers_e9ae7617], result)
750
794
 
751
- @builtins.property
752
- def artifacts_directory(self) -> builtins.str:
753
- '''(experimental) A name of a directory that includes build artifacts.
754
-
755
- :stability: experimental
756
- '''
757
- result = self._values.get("artifacts_directory")
758
- assert result is not None, "Required property 'artifacts_directory' is missing"
759
- return typing.cast(builtins.str, result)
760
-
761
795
  @builtins.property
762
796
  def build_task(self) -> _Task_9fa875b6:
763
797
  '''(experimental) The task to execute in order to build the project.
@@ -769,32 +803,32 @@ class BuildWorkflowOptions(BuildWorkflowCommonOptions):
769
803
  return typing.cast(_Task_9fa875b6, result)
770
804
 
771
805
  @builtins.property
772
- def container_image(self) -> typing.Optional[builtins.str]:
773
- '''(experimental) The container image to use for builds.
806
+ def artifacts_directory(self) -> typing.Optional[builtins.str]:
807
+ '''(experimental) A name of a directory that includes build artifacts.
774
808
 
775
- :default: - the default workflow container
809
+ :default: "dist"
776
810
 
777
811
  :stability: experimental
778
812
  '''
779
- result = self._values.get("container_image")
813
+ result = self._values.get("artifacts_directory")
780
814
  return typing.cast(typing.Optional[builtins.str], result)
781
815
 
782
816
  @builtins.property
783
- def env(self) -> typing.Optional[typing.Mapping[builtins.str, builtins.str]]:
784
- '''(experimental) Build environment variables.
817
+ def container_image(self) -> typing.Optional[builtins.str]:
818
+ '''(experimental) The container image to use for builds.
785
819
 
786
- :default: {}
820
+ :default: - the default workflow container
787
821
 
788
822
  :stability: experimental
789
823
  '''
790
- result = self._values.get("env")
791
- return typing.cast(typing.Optional[typing.Mapping[builtins.str, builtins.str]], result)
824
+ result = self._values.get("container_image")
825
+ return typing.cast(typing.Optional[builtins.str], result)
792
826
 
793
827
  @builtins.property
794
828
  def git_identity(self) -> typing.Optional[_GitIdentity_6effc3de]:
795
829
  '''(experimental) Git identity to use for the workflow.
796
830
 
797
- :default: - default identity
831
+ :default: - default GitHub Actions user
798
832
 
799
833
  :stability: experimental
800
834
  '''
@@ -901,15 +935,15 @@ def _typecheckingstub__8875bca09077fb03ccffe7b968539b2dfce687a745e71024f884a06b5
901
935
  def _typecheckingstub__f4d192684ec38f19e56855947a401da7aa8d483beaeef832704f28ff43d5ffe5(
902
936
  project: _Project_57d89203,
903
937
  *,
904
- artifacts_directory: builtins.str,
905
938
  build_task: _Task_9fa875b6,
939
+ artifacts_directory: typing.Optional[builtins.str] = None,
906
940
  container_image: typing.Optional[builtins.str] = None,
907
- env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
908
941
  git_identity: typing.Optional[typing.Union[_GitIdentity_6effc3de, typing.Dict[builtins.str, typing.Any]]] = None,
909
942
  mutable_build: typing.Optional[builtins.bool] = None,
910
943
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
911
944
  runs_on: typing.Optional[typing.Sequence[builtins.str]] = None,
912
945
  runs_on_group: typing.Optional[typing.Union[_GroupRunnerOptions_148c59c1, typing.Dict[builtins.str, typing.Any]]] = None,
946
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
913
947
  name: typing.Optional[builtins.str] = None,
914
948
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
915
949
  pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -974,6 +1008,7 @@ def _typecheckingstub__43bc47daca0c138fa9c8bc13154f9acea9c452e82f2dc45b3f3a655c6
974
1008
 
975
1009
  def _typecheckingstub__c47ecd67d7b1fa42db0bfe937571471191786b92fd702c85fceb89eb2d1b05c5(
976
1010
  *,
1011
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
977
1012
  name: typing.Optional[builtins.str] = None,
978
1013
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
979
1014
  pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
@@ -984,14 +1019,14 @@ def _typecheckingstub__c47ecd67d7b1fa42db0bfe937571471191786b92fd702c85fceb89eb2
984
1019
 
985
1020
  def _typecheckingstub__9d08c9df51ed0147527f9d30b5f0f37c5e4482b10a1ea4f55a14885626d0721e(
986
1021
  *,
1022
+ env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
987
1023
  name: typing.Optional[builtins.str] = None,
988
1024
  permissions: typing.Optional[typing.Union[_JobPermissions_3b5b53dc, typing.Dict[builtins.str, typing.Any]]] = None,
989
1025
  pre_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,
990
1026
  workflow_triggers: typing.Optional[typing.Union[_Triggers_e9ae7617, typing.Dict[builtins.str, typing.Any]]] = None,
991
- artifacts_directory: builtins.str,
992
1027
  build_task: _Task_9fa875b6,
1028
+ artifacts_directory: typing.Optional[builtins.str] = None,
993
1029
  container_image: typing.Optional[builtins.str] = None,
994
- env: typing.Optional[typing.Mapping[builtins.str, builtins.str]] = None,
995
1030
  git_identity: typing.Optional[typing.Union[_GitIdentity_6effc3de, typing.Dict[builtins.str, typing.Any]]] = None,
996
1031
  mutable_build: typing.Optional[builtins.bool] = None,
997
1032
  post_build_steps: typing.Optional[typing.Sequence[typing.Union[_JobStep_c3287c05, typing.Dict[builtins.str, typing.Any]]]] = None,