# Copyright (c) 2023, Teriks
#
# dgenerate is distributed under the following BSD 3-Clause License
#
# Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
#
# 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
__version__ = '2.1.0'
import sys
import warnings
warnings.filterwarnings('ignore', module='controlnet_aux')
warnings.filterwarnings('ignore', module='diffusers')
warnings.filterwarnings('ignore', module='transformers')
warnings.filterwarnings('ignore', module='huggingface_hub')
try:
import diffusers
import transformers
from dgenerate.renderloop import \
RenderLoop, \
RenderLoopConfig, \
RenderLoopConfigError, \
ImageGeneratedCallbackArgument, \
gen_seeds
from dgenerate.pipelinewrapper import \
InvalidModelUriError, \
InvalidSchedulerName, \
ModelTypes, \
DataTypes, \
DiffusionArguments, \
OutOfMemoryError, \
ModelNotFoundError
from dgenerate.prompt import Prompt
from dgenerate.batchprocess import BatchProcessError, create_config_runner
from dgenerate.invoker import invoke_dgenerate
from dgenerate.arguments import parse_args, DgenerateUsageError
from dgenerate.pipelinewrapper import ModelTypes, DiffusionArguments
from dgenerate.mediainput import ImageSeedError, UnknownMimetypeError, ImageSeed
from dgenerate.preprocessors import ImagePreprocessorArgumentError, ImagePreprocessorNotFoundError
import dgenerate.messages
import dgenerate.types
transformers.logging.set_verbosity(transformers.logging.CRITICAL)
diffusers.logging.set_verbosity(diffusers.logging.CRITICAL)
except KeyboardInterrupt:
print('Aborting due to keyboard interrupt!')
sys.exit(1)
[docs]
def main():
"""
Entry point for the dgenerate command line tool.
"""
try:
render_loop = RenderLoop()
if not sys.stdin.isatty():
# Not a terminal, batch process STDIN
try:
create_config_runner(render_loop=render_loop,
version=__version__,
injected_args=sys.argv[1:]).run_file(sys.stdin)
except BatchProcessError as e:
dgenerate.messages.log(f'Config Error: {e}', level=dgenerate.messages.ERROR)
sys.exit(1)
else:
sys.exit(invoke_dgenerate(sys.argv[1:], render_loop=render_loop))
except KeyboardInterrupt:
print('Aborting due to keyboard interrupt!', file=sys.stderr)
sys.exit(1)
__all__ = dgenerate.types.module_all()