




'''simple docstring'''



import argparse
from collections import defaultdict

import yaml


UpperCAmelCase_							:	int	     =		'''docs/source/en/_toctree.yml'''







def       _UpperCamelCase			(_lowerCamelCase				:  Tuple						)-> List[str]:




     '''simple docstring'''





     __snake_case            =	defaultdict(_lowerCamelCase						)
     __snake_case            =	[]
     __snake_case            =	[]
     for doc in doc_list:
          if "local" in doc:
               counts[doc["local"]] += 1

          if doc["title"].lower() == "overview":
               overview_doc.append({'''local''': doc['''local'''], '''title''': doc['''title''']}						)
          else:
               new_doc_list.append(_lowerCamelCase						)

     __snake_case            =	new_doc_list
     __snake_case            =	[key for key, value in counts.items() if value > 1]

     __snake_case            =	[]
     for duplicate_key in duplicates:
          __snake_case            =	list({doc['''title'''] for doc in doc_list if doc['''local'''] == duplicate_key}						)
          if len(_lowerCamelCase						) > 1:
               raise ValueError(
                   f'''{duplicate_key} is present several times in the documentation table of content at '''
                   '''`docs/source/en/_toctree.yml` with different *Title* values. Choose one of those and remove the '''
                   '''others.'''						)
          # Only add this once
          new_doc.append({'''local''': duplicate_key, '''title''': titles[0]}						)

     # Add none duplicate-keys
     new_doc.extend([doc for doc in doc_list if '''local''' not in counts or counts[doc['''local''']] == 1]						)
     __snake_case            =	sorted(_lowerCamelCase ,						key=lambda _lowerCamelCase						: s["title"].lower()						)

     # "overview" gets special treatment and is always first
     if len(_lowerCamelCase						) > 1:
          raise ValueError('''{doc_list} has two \'overview\' docs which is not allowed.'''						)

     overview_doc.extend(_lowerCamelCase						)

     # Sort
     return overview_doc







def       _UpperCamelCase			(_lowerCamelCase				:  Tuple=False						)-> Any:




     '''simple docstring'''





     with open(_lowerCamelCase ,						encoding='''utf-8'''						) as f:
          __snake_case            =	yaml.safe_load(f.read()						)

     # Get to the API doc
     __snake_case            =	0
     while content[api_idx]["title"] != "API":
          api_idx += 1
     __snake_case            =	content[api_idx]['''sections''']

     # Then to the model doc
     __snake_case            =	0
     while api_doc[scheduler_idx]["title"] != "Schedulers":
          scheduler_idx += 1

     __snake_case            =	api_doc[scheduler_idx]['''sections''']
     __snake_case            =	clean_doc_toc(_lowerCamelCase						)

     __snake_case            =	False
     if new_scheduler_doc != scheduler_doc:
          __snake_case            =	True
          if overwrite:
               __snake_case            =	new_scheduler_doc

     if diff:
          if overwrite:
               __snake_case            =	api_doc
               with open(_lowerCamelCase ,						'''w''' ,						encoding='''utf-8'''						) as f:
                    f.write(yaml.dump(_lowerCamelCase ,						allow_unicode=_lowerCamelCase						)						)
          else:
               raise ValueError(
                   '''The model doc part of the table of content is not properly sorted, run `make style` to fix this.'''						)







def       _UpperCamelCase			(_lowerCamelCase				:  int=False						)-> Optional[int]:




     '''simple docstring'''





     with open(_lowerCamelCase ,						encoding='''utf-8'''						) as f:
          __snake_case            =	yaml.safe_load(f.read()						)

     # Get to the API doc
     __snake_case            =	0
     while content[api_idx]["title"] != "API":
          api_idx += 1
     __snake_case            =	content[api_idx]['''sections''']

     # Then to the model doc
     __snake_case            =	0
     while api_doc[pipeline_idx]["title"] != "Pipelines":
          pipeline_idx += 1

     __snake_case            =	False
     __snake_case            =	api_doc[pipeline_idx]['''sections''']
     __snake_case            =	[]

     # sort sub pipeline docs
     for pipeline_doc in pipeline_docs:
          if "section" in pipeline_doc:
               __snake_case            =	pipeline_doc['''section''']
               __snake_case            =	clean_doc_toc(_lowerCamelCase						)
               if overwrite:
                    __snake_case            =	new_sub_pipeline_doc
          new_pipeline_docs.append(_lowerCamelCase						)

     # sort overall pipeline doc
     __snake_case            =	clean_doc_toc(_lowerCamelCase						)

     if new_pipeline_docs != pipeline_docs:
          __snake_case            =	True
          if overwrite:
               __snake_case            =	new_pipeline_docs

     if diff:
          if overwrite:
               __snake_case            =	api_doc
               with open(_lowerCamelCase ,						'''w''' ,						encoding='''utf-8'''						) as f:
                    f.write(yaml.dump(_lowerCamelCase ,						allow_unicode=_lowerCamelCase						)						)
          else:
               raise ValueError(
                   '''The model doc part of the table of content is not properly sorted, run `make style` to fix this.'''						)


if __name__ == "__main__":
     UpperCAmelCase_							:	Optional[Any]	     =		argparse.ArgumentParser()
     parser.add_argument('''--fix_and_overwrite''', action='''store_true''', help='''Whether to fix inconsistencies.''')
     UpperCAmelCase_							:	Dict	     =		parser.parse_args()

     check_scheduler_doc(args.fix_and_overwrite)
     check_pipeline_doc(args.fix_and_overwrite)














def 	UpperCamelCase	(							snake_case__  : int	):




     '''simple docstring'''






     __snake_case      :List[Any] 							=    0
     while num > 0:
          digit_sum += num % 10
          num //= 10
     return digit_sum






def 	UpperCamelCase	(							snake_case__  : int = 100	):




     '''simple docstring'''






     __snake_case      :Tuple 							=    1
     __snake_case      :Dict 							=    2

     for i in range(2						,max_n + 1	):
          __snake_case      :Optional[int] 							=    pre_numerator
          __snake_case      :List[Any] 							=    2 * i // 3 if i % 3 == 0 else 1
          __snake_case      :Dict 							=    cur_numerator
          __snake_case      :Optional[Any] 							=    e_cont * pre_numerator + temp

     return sum_digits(snake_case__	)


if __name__ == "__main__":
     print(f'''{solution() = }''')


