From ca1bab3524d314314d084a81a9fd71d74a169f61 Mon Sep 17 00:00:00 2001 From: daspartho Date: Fri, 2 Sep 2022 03:07:52 +0530 Subject: [PATCH 1/3] [Type hint] PNDM pipeline --- src/diffusers/pipelines/pndm/pipeline_pndm.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/diffusers/pipelines/pndm/pipeline_pndm.py b/src/diffusers/pipelines/pndm/pipeline_pndm.py index 32ddbd8c1711..a10292d328d7 100644 --- a/src/diffusers/pipelines/pndm/pipeline_pndm.py +++ b/src/diffusers/pipelines/pndm/pipeline_pndm.py @@ -15,20 +15,33 @@ import warnings +from typing import Optional import torch +from ...models import UNet2DModel from ...pipeline_utils import DiffusionPipeline +from ...schedulers import PNDMScheduler class PNDMPipeline(DiffusionPipeline): - def __init__(self, unet, scheduler): + unet: UNet2DModel + scheduler: PNDMScheduler + + def __init__(self, unet: UNet2DModel, scheduler: PNDMScheduler): super().__init__() scheduler = scheduler.set_format("pt") self.register_modules(unet=unet, scheduler=scheduler) @torch.no_grad() - def __call__(self, batch_size=1, generator=None, num_inference_steps=50, output_type="pil", **kwargs): + def __call__( + self, + batch_size: int = 1, + num_inference_steps: int = 50, + generator: Optional[torch.Generator] = None, + output_type: Optional[str] = "pil", + **kwargs, + ): # For more information on the sampling method you can take a look at Algorithm 2 of # the official paper: https://arxiv.org/pdf/2202.09778.pdf @@ -62,4 +75,4 @@ def __call__(self, batch_size=1, generator=None, num_inference_steps=50, output_ if output_type == "pil": image = self.numpy_to_pil(image) - return {"sample": image} + return {"sample": image} \ No newline at end of file From b65a77ec1b1e5577cdfe16df0b12c7d7968e2c29 Mon Sep 17 00:00:00 2001 From: daspartho Date: Fri, 2 Sep 2022 03:10:12 +0530 Subject: [PATCH 2/3] ran make style --- src/diffusers/models/unet_2d.py | 1 - src/diffusers/models/unet_2d_condition.py | 3 --- src/diffusers/models/unet_blocks.py | 3 --- src/diffusers/pipeline_utils.py | 1 - src/diffusers/pipelines/ddim/pipeline_ddim.py | 1 - .../pipelines/latent_diffusion/pipeline_latent_diffusion.py | 1 - src/diffusers/pipelines/pndm/pipeline_pndm.py | 2 +- src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py | 1 - .../stable_diffusion/pipeline_stable_diffusion_img2img.py | 1 - .../stable_diffusion/pipeline_stable_diffusion_inpaint.py | 1 - src/diffusers/schedulers/scheduling_ddim.py | 1 - src/diffusers/schedulers/scheduling_ddpm.py | 1 - src/diffusers/schedulers/scheduling_pndm.py | 1 - src/diffusers/schedulers/scheduling_sde_vp.py | 1 - src/diffusers/schedulers/scheduling_utils.py | 1 - src/diffusers/utils/logging.py | 4 ---- 16 files changed, 1 insertion(+), 23 deletions(-) diff --git a/src/diffusers/models/unet_2d.py b/src/diffusers/models/unet_2d.py index db4c33690c9d..0a4af2a1b99e 100644 --- a/src/diffusers/models/unet_2d.py +++ b/src/diffusers/models/unet_2d.py @@ -120,7 +120,6 @@ def __init__( def forward( self, sample: torch.FloatTensor, timestep: Union[torch.Tensor, float, int] ) -> Dict[str, torch.FloatTensor]: - # 0. center input if necessary if self.config.center_input_sample: sample = 2 * sample - 1.0 diff --git a/src/diffusers/models/unet_2d_condition.py b/src/diffusers/models/unet_2d_condition.py index 25c4e37d8a6d..d6461d75df3b 100644 --- a/src/diffusers/models/unet_2d_condition.py +++ b/src/diffusers/models/unet_2d_condition.py @@ -121,7 +121,6 @@ def forward( timestep: Union[torch.Tensor, float, int], encoder_hidden_states: torch.Tensor, ) -> Dict[str, torch.FloatTensor]: - # 0. center input if necessary if self.config.center_input_sample: sample = 2 * sample - 1.0 @@ -145,7 +144,6 @@ def forward( # 3. down down_block_res_samples = (sample,) for downsample_block in self.down_blocks: - if hasattr(downsample_block, "attentions") and downsample_block.attentions is not None: sample, res_samples = downsample_block( hidden_states=sample, temb=emb, encoder_hidden_states=encoder_hidden_states @@ -160,7 +158,6 @@ def forward( # 5. up for upsample_block in self.up_blocks: - res_samples = down_block_res_samples[-len(upsample_block.resnets) :] down_block_res_samples = down_block_res_samples[: -len(upsample_block.resnets)] diff --git a/src/diffusers/models/unet_blocks.py b/src/diffusers/models/unet_blocks.py index bf9e0198d7c9..4aae3ee82832 100644 --- a/src/diffusers/models/unet_blocks.py +++ b/src/diffusers/models/unet_blocks.py @@ -947,7 +947,6 @@ def __init__( def forward(self, hidden_states, res_hidden_states_tuple, temb=None): for resnet, attn in zip(self.resnets, self.attentions): - # pop res hidden states res_hidden_states = res_hidden_states_tuple[-1] res_hidden_states_tuple = res_hidden_states_tuple[:-1] @@ -1027,7 +1026,6 @@ def __init__( def forward(self, hidden_states, res_hidden_states_tuple, temb=None, encoder_hidden_states=None): for resnet, attn in zip(self.resnets, self.attentions): - # pop res hidden states res_hidden_states = res_hidden_states_tuple[-1] res_hidden_states_tuple = res_hidden_states_tuple[:-1] @@ -1091,7 +1089,6 @@ def __init__( def forward(self, hidden_states, res_hidden_states_tuple, temb=None): for resnet in self.resnets: - # pop res hidden states res_hidden_states = res_hidden_states_tuple[-1] res_hidden_states_tuple = res_hidden_states_tuple[:-1] diff --git a/src/diffusers/pipeline_utils.py b/src/diffusers/pipeline_utils.py index 214133bc5f17..58f571d709df 100644 --- a/src/diffusers/pipeline_utils.py +++ b/src/diffusers/pipeline_utils.py @@ -55,7 +55,6 @@ class DiffusionPipeline(ConfigMixin): - config_name = "model_index.json" def register_modules(self, **kwargs): diff --git a/src/diffusers/pipelines/ddim/pipeline_ddim.py b/src/diffusers/pipelines/ddim/pipeline_ddim.py index 03a9c52b16f9..97474a87a2b5 100644 --- a/src/diffusers/pipelines/ddim/pipeline_ddim.py +++ b/src/diffusers/pipelines/ddim/pipeline_ddim.py @@ -29,7 +29,6 @@ def __init__(self, unet, scheduler): @torch.no_grad() def __call__(self, batch_size=1, generator=None, eta=0.0, num_inference_steps=50, output_type="pil", **kwargs): - if "torch_device" in kwargs: device = kwargs.pop("torch_device") warnings.warn( diff --git a/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py b/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py index a348d9c08888..0fb3cf2d2998 100644 --- a/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py +++ b/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py @@ -630,7 +630,6 @@ def forward( output_hidden_states=None, return_dict=None, ): - outputs = self.model( input_ids, attention_mask=attention_mask, diff --git a/src/diffusers/pipelines/pndm/pipeline_pndm.py b/src/diffusers/pipelines/pndm/pipeline_pndm.py index a10292d328d7..632e31777a53 100644 --- a/src/diffusers/pipelines/pndm/pipeline_pndm.py +++ b/src/diffusers/pipelines/pndm/pipeline_pndm.py @@ -75,4 +75,4 @@ def __call__( if output_type == "pil": image = self.numpy_to_pil(image) - return {"sample": image} \ No newline at end of file + return {"sample": image} diff --git a/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py b/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py index 61008272ebbe..49da61cb9b0c 100644 --- a/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py +++ b/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py @@ -11,7 +11,6 @@ class ScoreSdeVePipeline(DiffusionPipeline): - unet: UNet2DModel scheduler: ScoreSdeVeScheduler diff --git a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py index 2c3d5c8e15e8..dbec34d26740 100644 --- a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +++ b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py @@ -59,7 +59,6 @@ def __call__( generator: Optional[torch.Generator] = None, output_type: Optional[str] = "pil", ): - if isinstance(prompt, str): batch_size = 1 elif isinstance(prompt, list): diff --git a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py index 6827846722d7..62c3a2680cbe 100644 --- a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +++ b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py @@ -73,7 +73,6 @@ def __call__( generator: Optional[torch.Generator] = None, output_type: Optional[str] = "pil", ): - if isinstance(prompt, str): batch_size = 1 elif isinstance(prompt, list): diff --git a/src/diffusers/schedulers/scheduling_ddim.py b/src/diffusers/schedulers/scheduling_ddim.py index b0a90e522d56..c00dcd23993a 100644 --- a/src/diffusers/schedulers/scheduling_ddim.py +++ b/src/diffusers/schedulers/scheduling_ddim.py @@ -62,7 +62,6 @@ def __init__( set_alpha_to_one=True, tensor_format="pt", ): - if beta_schedule == "linear": self.betas = np.linspace(beta_start, beta_end, num_train_timesteps, dtype=np.float32) elif beta_schedule == "scaled_linear": diff --git a/src/diffusers/schedulers/scheduling_ddpm.py b/src/diffusers/schedulers/scheduling_ddpm.py index e12acd01dccf..542cfd63e221 100644 --- a/src/diffusers/schedulers/scheduling_ddpm.py +++ b/src/diffusers/schedulers/scheduling_ddpm.py @@ -60,7 +60,6 @@ def __init__( clip_sample=True, tensor_format="pt", ): - if trained_betas is not None: self.betas = np.asarray(trained_betas) elif beta_schedule == "linear": diff --git a/src/diffusers/schedulers/scheduling_pndm.py b/src/diffusers/schedulers/scheduling_pndm.py index 281068f93c55..2965b63de3a4 100644 --- a/src/diffusers/schedulers/scheduling_pndm.py +++ b/src/diffusers/schedulers/scheduling_pndm.py @@ -58,7 +58,6 @@ def __init__( tensor_format="pt", skip_prk_steps=False, ): - if beta_schedule == "linear": self.betas = np.linspace(beta_start, beta_end, num_train_timesteps, dtype=np.float32) elif beta_schedule == "scaled_linear": diff --git a/src/diffusers/schedulers/scheduling_sde_vp.py b/src/diffusers/schedulers/scheduling_sde_vp.py index abb1d15bd31d..e716c73d0524 100644 --- a/src/diffusers/schedulers/scheduling_sde_vp.py +++ b/src/diffusers/schedulers/scheduling_sde_vp.py @@ -26,7 +26,6 @@ class ScoreSdeVpScheduler(SchedulerMixin, ConfigMixin): @register_to_config def __init__(self, num_train_timesteps=2000, beta_min=0.1, beta_max=20, sampling_eps=1e-3, tensor_format="np"): - self.sigmas = None self.discrete_sigmas = None self.timesteps = None diff --git a/src/diffusers/schedulers/scheduling_utils.py b/src/diffusers/schedulers/scheduling_utils.py index b0cd4bda104f..c09900fa6396 100644 --- a/src/diffusers/schedulers/scheduling_utils.py +++ b/src/diffusers/schedulers/scheduling_utils.py @@ -21,7 +21,6 @@ class SchedulerMixin: - config_name = SCHEDULER_CONFIG_NAME ignore_for_config = ["tensor_format"] diff --git a/src/diffusers/utils/logging.py b/src/diffusers/utils/logging.py index 1f2d0227b87c..7771a5a5bf7a 100644 --- a/src/diffusers/utils/logging.py +++ b/src/diffusers/utils/logging.py @@ -65,17 +65,14 @@ def _get_default_logging_level(): def _get_library_name() -> str: - return __name__.split(".")[0] def _get_library_root_logger() -> logging.Logger: - return logging.getLogger(_get_library_name()) def _configure_library_root_logger() -> None: - global _default_handler with _lock: @@ -93,7 +90,6 @@ def _configure_library_root_logger() -> None: def _reset_library_root_logger() -> None: - global _default_handler with _lock: From b217c5cc2acba2af6165ab87bf0b98ce88bcef74 Mon Sep 17 00:00:00 2001 From: daspartho Date: Fri, 2 Sep 2022 21:06:06 +0530 Subject: [PATCH 3/3] Revert "ran make style" wrong black version --- src/diffusers/models/unet_2d.py | 1 + src/diffusers/models/unet_2d_condition.py | 3 +++ src/diffusers/models/unet_blocks.py | 3 +++ src/diffusers/pipeline_utils.py | 1 + src/diffusers/pipelines/ddim/pipeline_ddim.py | 1 + .../pipelines/latent_diffusion/pipeline_latent_diffusion.py | 1 + src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py | 1 + .../stable_diffusion/pipeline_stable_diffusion_img2img.py | 1 + .../stable_diffusion/pipeline_stable_diffusion_inpaint.py | 1 + src/diffusers/schedulers/scheduling_ddim.py | 1 + src/diffusers/schedulers/scheduling_ddpm.py | 1 + src/diffusers/schedulers/scheduling_pndm.py | 1 + src/diffusers/schedulers/scheduling_sde_vp.py | 1 + src/diffusers/schedulers/scheduling_utils.py | 1 + src/diffusers/utils/logging.py | 4 ++++ 15 files changed, 22 insertions(+) diff --git a/src/diffusers/models/unet_2d.py b/src/diffusers/models/unet_2d.py index 0a4af2a1b99e..db4c33690c9d 100644 --- a/src/diffusers/models/unet_2d.py +++ b/src/diffusers/models/unet_2d.py @@ -120,6 +120,7 @@ def __init__( def forward( self, sample: torch.FloatTensor, timestep: Union[torch.Tensor, float, int] ) -> Dict[str, torch.FloatTensor]: + # 0. center input if necessary if self.config.center_input_sample: sample = 2 * sample - 1.0 diff --git a/src/diffusers/models/unet_2d_condition.py b/src/diffusers/models/unet_2d_condition.py index d6461d75df3b..25c4e37d8a6d 100644 --- a/src/diffusers/models/unet_2d_condition.py +++ b/src/diffusers/models/unet_2d_condition.py @@ -121,6 +121,7 @@ def forward( timestep: Union[torch.Tensor, float, int], encoder_hidden_states: torch.Tensor, ) -> Dict[str, torch.FloatTensor]: + # 0. center input if necessary if self.config.center_input_sample: sample = 2 * sample - 1.0 @@ -144,6 +145,7 @@ def forward( # 3. down down_block_res_samples = (sample,) for downsample_block in self.down_blocks: + if hasattr(downsample_block, "attentions") and downsample_block.attentions is not None: sample, res_samples = downsample_block( hidden_states=sample, temb=emb, encoder_hidden_states=encoder_hidden_states @@ -158,6 +160,7 @@ def forward( # 5. up for upsample_block in self.up_blocks: + res_samples = down_block_res_samples[-len(upsample_block.resnets) :] down_block_res_samples = down_block_res_samples[: -len(upsample_block.resnets)] diff --git a/src/diffusers/models/unet_blocks.py b/src/diffusers/models/unet_blocks.py index 4aae3ee82832..bf9e0198d7c9 100644 --- a/src/diffusers/models/unet_blocks.py +++ b/src/diffusers/models/unet_blocks.py @@ -947,6 +947,7 @@ def __init__( def forward(self, hidden_states, res_hidden_states_tuple, temb=None): for resnet, attn in zip(self.resnets, self.attentions): + # pop res hidden states res_hidden_states = res_hidden_states_tuple[-1] res_hidden_states_tuple = res_hidden_states_tuple[:-1] @@ -1026,6 +1027,7 @@ def __init__( def forward(self, hidden_states, res_hidden_states_tuple, temb=None, encoder_hidden_states=None): for resnet, attn in zip(self.resnets, self.attentions): + # pop res hidden states res_hidden_states = res_hidden_states_tuple[-1] res_hidden_states_tuple = res_hidden_states_tuple[:-1] @@ -1089,6 +1091,7 @@ def __init__( def forward(self, hidden_states, res_hidden_states_tuple, temb=None): for resnet in self.resnets: + # pop res hidden states res_hidden_states = res_hidden_states_tuple[-1] res_hidden_states_tuple = res_hidden_states_tuple[:-1] diff --git a/src/diffusers/pipeline_utils.py b/src/diffusers/pipeline_utils.py index 58f571d709df..214133bc5f17 100644 --- a/src/diffusers/pipeline_utils.py +++ b/src/diffusers/pipeline_utils.py @@ -55,6 +55,7 @@ class DiffusionPipeline(ConfigMixin): + config_name = "model_index.json" def register_modules(self, **kwargs): diff --git a/src/diffusers/pipelines/ddim/pipeline_ddim.py b/src/diffusers/pipelines/ddim/pipeline_ddim.py index 97474a87a2b5..03a9c52b16f9 100644 --- a/src/diffusers/pipelines/ddim/pipeline_ddim.py +++ b/src/diffusers/pipelines/ddim/pipeline_ddim.py @@ -29,6 +29,7 @@ def __init__(self, unet, scheduler): @torch.no_grad() def __call__(self, batch_size=1, generator=None, eta=0.0, num_inference_steps=50, output_type="pil", **kwargs): + if "torch_device" in kwargs: device = kwargs.pop("torch_device") warnings.warn( diff --git a/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py b/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py index 0fb3cf2d2998..a348d9c08888 100644 --- a/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py +++ b/src/diffusers/pipelines/latent_diffusion/pipeline_latent_diffusion.py @@ -630,6 +630,7 @@ def forward( output_hidden_states=None, return_dict=None, ): + outputs = self.model( input_ids, attention_mask=attention_mask, diff --git a/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py b/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py index 49da61cb9b0c..61008272ebbe 100644 --- a/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py +++ b/src/diffusers/pipelines/score_sde_ve/pipeline_score_sde_ve.py @@ -11,6 +11,7 @@ class ScoreSdeVePipeline(DiffusionPipeline): + unet: UNet2DModel scheduler: ScoreSdeVeScheduler diff --git a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py index dbec34d26740..2c3d5c8e15e8 100644 --- a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py +++ b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_img2img.py @@ -59,6 +59,7 @@ def __call__( generator: Optional[torch.Generator] = None, output_type: Optional[str] = "pil", ): + if isinstance(prompt, str): batch_size = 1 elif isinstance(prompt, list): diff --git a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py index 62c3a2680cbe..6827846722d7 100644 --- a/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py +++ b/src/diffusers/pipelines/stable_diffusion/pipeline_stable_diffusion_inpaint.py @@ -73,6 +73,7 @@ def __call__( generator: Optional[torch.Generator] = None, output_type: Optional[str] = "pil", ): + if isinstance(prompt, str): batch_size = 1 elif isinstance(prompt, list): diff --git a/src/diffusers/schedulers/scheduling_ddim.py b/src/diffusers/schedulers/scheduling_ddim.py index c00dcd23993a..b0a90e522d56 100644 --- a/src/diffusers/schedulers/scheduling_ddim.py +++ b/src/diffusers/schedulers/scheduling_ddim.py @@ -62,6 +62,7 @@ def __init__( set_alpha_to_one=True, tensor_format="pt", ): + if beta_schedule == "linear": self.betas = np.linspace(beta_start, beta_end, num_train_timesteps, dtype=np.float32) elif beta_schedule == "scaled_linear": diff --git a/src/diffusers/schedulers/scheduling_ddpm.py b/src/diffusers/schedulers/scheduling_ddpm.py index 542cfd63e221..e12acd01dccf 100644 --- a/src/diffusers/schedulers/scheduling_ddpm.py +++ b/src/diffusers/schedulers/scheduling_ddpm.py @@ -60,6 +60,7 @@ def __init__( clip_sample=True, tensor_format="pt", ): + if trained_betas is not None: self.betas = np.asarray(trained_betas) elif beta_schedule == "linear": diff --git a/src/diffusers/schedulers/scheduling_pndm.py b/src/diffusers/schedulers/scheduling_pndm.py index 2965b63de3a4..281068f93c55 100644 --- a/src/diffusers/schedulers/scheduling_pndm.py +++ b/src/diffusers/schedulers/scheduling_pndm.py @@ -58,6 +58,7 @@ def __init__( tensor_format="pt", skip_prk_steps=False, ): + if beta_schedule == "linear": self.betas = np.linspace(beta_start, beta_end, num_train_timesteps, dtype=np.float32) elif beta_schedule == "scaled_linear": diff --git a/src/diffusers/schedulers/scheduling_sde_vp.py b/src/diffusers/schedulers/scheduling_sde_vp.py index e716c73d0524..abb1d15bd31d 100644 --- a/src/diffusers/schedulers/scheduling_sde_vp.py +++ b/src/diffusers/schedulers/scheduling_sde_vp.py @@ -26,6 +26,7 @@ class ScoreSdeVpScheduler(SchedulerMixin, ConfigMixin): @register_to_config def __init__(self, num_train_timesteps=2000, beta_min=0.1, beta_max=20, sampling_eps=1e-3, tensor_format="np"): + self.sigmas = None self.discrete_sigmas = None self.timesteps = None diff --git a/src/diffusers/schedulers/scheduling_utils.py b/src/diffusers/schedulers/scheduling_utils.py index c09900fa6396..b0cd4bda104f 100644 --- a/src/diffusers/schedulers/scheduling_utils.py +++ b/src/diffusers/schedulers/scheduling_utils.py @@ -21,6 +21,7 @@ class SchedulerMixin: + config_name = SCHEDULER_CONFIG_NAME ignore_for_config = ["tensor_format"] diff --git a/src/diffusers/utils/logging.py b/src/diffusers/utils/logging.py index 7771a5a5bf7a..1f2d0227b87c 100644 --- a/src/diffusers/utils/logging.py +++ b/src/diffusers/utils/logging.py @@ -65,14 +65,17 @@ def _get_default_logging_level(): def _get_library_name() -> str: + return __name__.split(".")[0] def _get_library_root_logger() -> logging.Logger: + return logging.getLogger(_get_library_name()) def _configure_library_root_logger() -> None: + global _default_handler with _lock: @@ -90,6 +93,7 @@ def _configure_library_root_logger() -> None: def _reset_library_root_logger() -> None: + global _default_handler with _lock: