


'''simple docstring'''






import argparse
import os
import pickle
import sys

import torch

from transformers import TransfoXLConfig, TransfoXLLMHeadModel, load_tf_weights_in_transfo_xl
from transformers.models.transfo_xl import tokenization_transfo_xl as data_utils
from transformers.models.transfo_xl.tokenization_transfo_xl import CORPUS_NAME, VOCAB_FILES_NAMES
from transformers.utils import CONFIG_NAME, WEIGHTS_NAME, logging


logging.set_verbosity_info()

# We do this to be able to load python 2 datasets pickles
# See e.g. https://stackoverflow.com/questions/2121874/python-pickling-after-changing-a-modules-directory/2121918#2121918
__A   :    List[Any]											= data_utils.TransfoXLTokenizer
__A   :    Optional[int]											= data_utils.TransfoXLCorpus
__A   :    Optional[Any]											= data_utils
__A   :    Dict											= data_utils







def 							UpperCamelCase_     (       A__   :  Any				,       A__   :  Tuple				,       A__   :  Union[str, Any]				,       A__   :  Union[str, Any]   ):
  '''simple docstring'''





  if transfo_xl_dataset_file:
    # Convert a pre-processed corpus (see original TensorFlow repo)
    with open(__lowerCAmelCase				,       """rb"""   ) as fp:
      lowerCAmelCase_     : Optional[Any]     =  pickle.load(__lowerCAmelCase				,       encoding="""latin1"""   )
    # Save vocabulary and dataset cache as Dictionaries (should be better than pickles for the long-term)
    lowerCAmelCase_     : str     =  pytorch_dump_folder_path + """/""" + VOCAB_FILES_NAMES["""pretrained_vocab_file"""]
    print(f'Save vocabulary to {pytorch_vocab_dump_path}'   )
    lowerCAmelCase_     : Optional[Any]     =  corpus.vocab.__dict__
    torch.save(__lowerCAmelCase				,       __lowerCAmelCase   )

    lowerCAmelCase_     : int     =  corpus.__dict__
    corpus_dict_no_vocab.pop("""vocab"""				,       __lowerCAmelCase   )
    lowerCAmelCase_     : int     =  pytorch_dump_folder_path + """/""" + CORPUS_NAME
    print(f'Save dataset to {pytorch_dataset_dump_path}'   )
    torch.save(__lowerCAmelCase				,       __lowerCAmelCase   )

  if tf_checkpoint_path:
    # Convert a pre-trained TensorFlow model
    lowerCAmelCase_     : str     =  os.path.abspath(__lowerCAmelCase   )
    lowerCAmelCase_     : List[str]     =  os.path.abspath(__lowerCAmelCase   )

    print(f'Converting Transformer XL checkpoint from {tf_path} with config at {config_path}.'   )
    # Initialise PyTorch model
    if transfo_xl_config_file == "":
      lowerCAmelCase_     : Tuple     =  TransfoXLConfig()
    else:
      lowerCAmelCase_     : List[str]     =  TransfoXLConfig.from_json_file(__lowerCAmelCase   )
    print(f'Building PyTorch model from configuration: {config}'   )
    lowerCAmelCase_     : Any     =  TransfoXLLMHeadModel(__lowerCAmelCase   )

    lowerCAmelCase_     : str     =  load_tf_weights_in_transfo_xl(__lowerCAmelCase				,       __lowerCAmelCase				,       __lowerCAmelCase   )
    # Save pytorch-model
    lowerCAmelCase_     : int     =  os.path.join(__lowerCAmelCase				,       __lowerCAmelCase   )
    lowerCAmelCase_     : List[str]     =  os.path.join(__lowerCAmelCase				,       __lowerCAmelCase   )
    print(f'Save PyTorch model to {os.path.abspath(__lowerCAmelCase   )}'   )
    torch.save(model.state_dict()				,       __lowerCAmelCase   )
    print(f'Save configuration file to {os.path.abspath(__lowerCAmelCase   )}'   )
    with open(__lowerCAmelCase				,       """w"""				,       encoding="""utf-8"""   ) as f:
      f.write(config.to_json_string()   )


if __name__ == "__main__":
  __A   :    Tuple											= argparse.ArgumentParser()
  parser.add_argument(
      "--pytorch_dump_folder_path",
      default=None,
      type=str,
      required=True,
      help="Path to the folder to store the PyTorch model or dataset/vocab.",
  )
  parser.add_argument(
      "--tf_checkpoint_path",
      default="",
      type=str,
      help="An optional path to a TensorFlow checkpoint path to be converted.",
  )
  parser.add_argument(
      "--transfo_xl_config_file",
      default="",
      type=str,
      help=(
          "An optional config json file corresponding to the pre-trained BERT model. \n"
          "This specifies the model architecture."
      ),
  )
  parser.add_argument(
      "--transfo_xl_dataset_file",
      default="",
      type=str,
      help="An optional dataset file to be converted in a vocabulary.",
  )
  __A   :    Dict											= parser.parse_args()
  convert_transfo_xl_checkpoint_to_pytorch(
      args.tf_checkpoint_path,
      args.transfo_xl_config_file,
      args.pytorch_dump_folder_path,
      args.transfo_xl_dataset_file,
  )





import os
from datetime import datetime as dt

from github import Github


__magic_name__  							=	[
    '''good first issue''',
    '''feature request''',
    '''wip''',
]





def 						SCREAMING_SNAKE_CASE__     (   ):
    snake_case__    =					Github(os.environ["GITHUB_TOKEN"]				)
    snake_case__    =					g.get_repo("huggingface/accelerate"				)
    snake_case__    =					repo.get_issues(state="open"				)

    for issue in open_issues:
        snake_case__    =					sorted([comment for comment in issue.get_comments()]     ,		key=lambda __lowerCAmelCase				: i.created_at     ,		reverse=__lowerCAmelCase				)
        snake_case__    =					comments[0] if len(__lowerCAmelCase				) > 0 else None
        snake_case__    =					dt.utcnow()
        snake_case__    =					(current_time - issue.updated_at).days
        snake_case__    =					(current_time - issue.created_at).days
        if (
            last_comment is not None
            and last_comment.user.login == "github-actions[bot]"
            and days_since_updated > 7
            and days_since_creation >= 30
            and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()				)
        ):
            # Close issue since it has been 7 days of inactivity since bot mention.
            issue.edit(state="closed"				)
        elif (
            days_since_updated > 23
            and days_since_creation >= 30
            and not any(label.name.lower() in LABELS_TO_EXEMPT for label in issue.get_labels()				)
        ):
            # Add stale comment
            issue.create_comment(
                "This issue has been automatically marked as stale because it has not had "
                "recent activity. If you think this still needs to be addressed "
                "please comment on this thread.\n\nPlease note that issues that do not follow the "
                "[contributing guidelines](https://github.com/huggingface/accelerate/blob/main/CONTRIBUTING.md) "
                "are likely to be ignored."				)


if __name__ == "__main__":
     main()



