MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = 479
AAAAAAaaAaaAaAAAaaAaAAAaaAaaaAaAaaAAaaaaAAAaAAaAAaAaaaAAaaaAaaaAAAaAAaAaaaAAAAAaaAaAaaAAAAaaAaAaaAAAaAAaaAAaaaAAAAaaAaaaAaaaaAaaaAAAaaAaAAAaaaaaaaaaaaaaaAaAaaaAaa = "jhumMfeiSbMsPgDzSDBTLfDOUkXFuAyKwqSayqVxTnJpsHNgiNxkgNfBDIsyTBWYtWhOZqFwWuWcJQj"
X160 = 564
gCAgUiWZcIKBqJqswZXDApbyTlClYaEkRXaOJEvjUnGjbbipnYLjcFJoypggspkYvqIsIYLLcmclrgr158 = 373
n1638559218228004156 = "JURiIAcCuDgjWPZHQRiSbjVHgPikTkNZGskPGRpcwCeEKzrcndEPymdnziqSESEDwYtbzQAyseehoAE"
JzKdMcnpiWaaGJDDzMQGWSPjevBoNotuKcEhMJBhPcbFLrVPyKXviVrVcNKJDTtPyiCumUZDsfviwnx154 = 323
e1638559218227787152 = "rRzvXaghXHZZbQtqvfBWNfIXpnChBUBGMEUxxlqwSfaakvqSHIEvgQQEKCrtXAUgXvUnrYFmMKWwgBW"
aaAAaAAAaAaAAaAAAAAAAaaaAAAAAAaaAaAAaAAAAAaAAAAaAaaAaAaaAaaaaaaAAaaAAAaaAAaaaAAAAaaaAaAaaAAAaaAaAAaaAaAAAAAAaAaaAAaaaaAAaAAaAAAaaAAAAaAaAaaAaAAaaAAaaa = 375
lIlIlIllIlllllIlllIIlIlIIIlllIIIIIIIIlllIlIIllIllllIlIllIIllIIIIIlIIlllIllllIllIIlIlIIlIlllIIllllIlIIIlIIIIlIIlIIllIllllIlIlllllIlIllIlllIlllIllllll = "oWHoecrhEUfCDlQziqBNtuYcrXnWzMHOwXWLdyiEcwoDDIikbkUCBDZYajQuAHhTFwLFmjngYZZqYdB"
F146 = 324
llIIlllllIIlIllIllllIIIlIlIlIllllIllIllIlIlIIIlIIIIlIIllIIlllllIllIIllllIlIIIlIlllIlIlllIIIIlIlllIIlIlIIlllIlIllIlllIIIIlllllIIlIIlIlIIIllIIIlIl = 470
lIlllllIIllllllIIIIIlIlIIIIIllIlIIIlIlIIIlIlIlIllllIlIIlIlIllIllIIlIIIlIIIIIIlIlIIllllllIlIIllIllllIIlIIIllIllIllIIIIIIIlIIIllIllIIllIllIIIlII = "hqKsTCREFNBjtcywYHOGPYsFAhjHAEOveTOYuYMQmqFJwEPHnnjhESkQDSMXcWfcKAsXkjmkjSpEzcn"
aAAAAAaaAaaaAaAaaAAaaaAaAAAaaaaaaaAaAAaAaAaaaaAaaAaAaAAaAAAAAaAAaAAaaAaAaaaaAAAaAAaaaAaaAAAAaAaaAAAaAAaAAaaaaaAaAAaAAaaAaAaAAaaaAAaaaAaaaAaA = 513
FpeKxRFuvtNxgXIFWWqQeUiDQNlDfehhBTvbhDEhpgxeJAYsnTmRdoXuCkfGFxuThutGYLwRBxlgMdR138 = "mymfQgmKxhteYzsQxDIReeeOFLmNrUbMzSjuFHxWuwSiubSStuCbJcdluKuLZNRKoDsoXjOVojjFGLN"
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF = 321
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP = 52
X16385592182261567132 = "dGZAfQetPxFufMcmhqeYnTsbdtKIlWesRRRNbObONTtCQHcyxIrrTJOaOxYfAOYtMsXLwLEgJdAZKAH"
j130 = "kteiOUCUuorVVwursWwSpPqSBffTRpjHnoGAyvoDUtgzFajiWCjrrRpdeqlXLdKCgOXeZfrkEvOhfAn"
ZnryNatNDSYgtzlptoPaBOJhpezDZGxKfpPalOATZkeRupDLTTFxMDdprLeBZFvXsImdfdjJbmNzCFc128 = "iUxbTPYPdGPXWqEBiLxfJQmkMGhRXvxITOiFCqdJKfurmBwrNJgzaflbnJevAeeEDCOkZoUJRKRGrxs"
lIIlllIIIllIlIlllIlIllllIIIIIIlIllllllIIllllIIlIIllIIIlIIIIlIIlIIIIIllllIIIlIlIIIIlIlIlIIlIIlllIIIIllIIlIlIlIIllIIIllIllllIllI = "rSkCbJCFtHGbWosppiZmHNrurJxDRRysmVsQtzIoBAKwrEuLuBgUnAnnBxVcMaxKoOrMUlcdQpXHgRO"
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww = "bEbNUPwjenNzAGoZKPpoDbWQFafAzvhVaTUCVKcZtvKbslOZdtNRozCkxZsieApRpYCXwCPFFEkceiH"
f122 = 420
aaAaaaAAAaaAAAAAAAAAaaAaaaAAaAaAAaaAAAaaaAaaaaaAAAaaAAAaAaAAaAAaaaaAAaaaAAAAAAaAaAaaaaaAaAaaAaAaAaaaAAAAaaAAaaAAaAaaAAaA = 225
IIlIIllIlllIIIllIIIIllIIIllIlIllIIIIllIIIlIlIlIlIIlIllIllIIlIllllIIlllIllIlIIIIIIlIlIIIIllIllIIlIlllIlIIlIllllllIlIllI = "gAAHvlJezgdgHyRacFMMdGYEbqtVCTKiedcdgmTnRnRRXPVFWZzHNBPjlDcQohDmmpYsGOJRCiMNgEm"
AAaaaAaAAaAaaaaAaaaaAaaAAaaAaaAAaaAaAAaaAaAAAaaAAaaaAaAaAAAAaAaaAAAaAaAAAAaaaAAAaaaAaaAAAaAAaaaaAaaAAaaaaaaaAAAaaAAA = 396
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV = 769
QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ = "iHOBelOBRnzUnGRGhhkbetvkOtrkFFEtSPgxRnZSnnnaLGTTYfKKIrOQIavqUqGYvPaUJKICPvujcXh"
y16385592182251809110 = "XQbVWrqxyySCkdfpQWDbaeFhlVciGDazBNpfhRtVIlcGghWOTooEgRtDunpNmEQKLBVIanmeUGCNfqh"
AaaAaaaAAAaAaAaaaAaAAAAaaAaAaAaaaaaaAaAaaaAAaaAAaAaAAAaAAAAAaaaaAAaaAaaaaAaAAaaaaaaaAAAaaaAAaaAAaAaAaaAaaaAA = "VVqJYojjnQdvqiEzXXPCYtktMYkFCEKfIvDaGXzYvTbNVAFBNzWKduOOTjTXfXacnVyqQvdlsMdUqvE"
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk = "HqzjAeaaebqaTpkzuOvzDTBAaDBCjKDlIDqoLxjgksihxthxpSEFrnYlOcSLFeuBVFRbRppArxaRSUm"
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = 319
lIIlIIlIlIlIlIIIIIllllIIlllIIlIIIIIIIIIlllIIIIlIIlIlllllIIlIllIIlIlllIlllIlIlIlllIIIIIIlllIlIIIIlllllI = 82
j100 = "TIGvRHTSxEPTGSXwwdhqrlhTEvEftBjtBFlgHsgPQZpxjktruSBUMqocHZwhzKXMywrnweIMhUewxJA"
aaaaAaaAaaaAaAAaaaAAAaAaAaaaAAAAAAAaAaaaaaAaAaaAAAAaaAAaAaaaaAAAaaaAAAAAAaaaaaaaAAAAAAaaAaAaAAaaaA = "ovqYRcgDOYCYpchDoCAMujXCTkBWcAxvDACsVwraXOpKNqqmSclOorvKedOPsxTmFzjsVCEzujSckYk"
l163855921822458596 = 607
AAAaaAAaAAaAAaaaAAaaAaAAAAAaaaaAaAaaAaaaaaAaaaAaAAAAAAaaaaAaaAaAaAAaAaaAaaaaAAaAaAaaAAaaaAaAAa = "ybHvIHXmvKKsTHeNnjnbqGRDzDgGTFIGdVHwdrxmGHiFWzXCRUznTfVfpPhndxDQbqLzpSukiAJTNtm"
IIllIIlIIIIIIIlllIIlllllllIIIllIIIlIlIllIIllllIIIIlIllllIIllIlIllllIIIlIlIlIIllIIllIIlIlllIl = "kvQlsbWPxMQnkIZVQTSjaApQhAflbqBnmUuWnxCSXrIiJjGrzhsGfWxKuTCCICUokDYwAYlCskniFxo"
lIlllIllllllllIllIIIlIlIlIIIIIlllIllllllIlIllllIIlIIlllIlIlIlIIIlllIIIlIlIllllIIIIlIlIlIlI = "ImbZGwjtqlBrhmdGjMXyYcVsbMrHYoYnaKCBxiBjmJGzAGHlBBQeesZYHhfyLVXOIlGGIPwdmZLxPsn"
mKNkqZTorgqCdsvegXOTOTOykEPLJJlaQcWPygbctBSSxnLdDJmvcBLXIrACBniJghHiGVCfKxYxtOa88 = 316
lIIIIIIllllIlIllllllIIlllllIllIlIIIIIlllIIIlIllIIIIllIllIllIlIIlIllllllllIlIIlIlllIlIl = 112
cclLOmSIKfltpvPVgPCoVjnunWOpvGlrCNSTAbSvyCxAOrEwKGtYgirdfaqLEsXyLrulRJikzEmNLRX84 = "gYkuyzkMzXUVSXFFWuZiRXjqVhvrMdoViRcYJutgcRrtjxmdwIFOXuReBmXajJnwrrlWpDZrHKqbdhG"
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh = 176
C80 = 277
nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn = "CFySQmyePXTZQHsCmPXIjRxTYJLEOBZbCbFntURHohrcewVebDriZNvHeDNDbTRDucvsEPYcRpVzMqG"
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO = 697
a74 = "ECvEUnRFVwvQhyGmIIgyEvPEeekvUuvkiLmgdKOGgWkVOFuzbndJyKPVpQfnQBoQzXVpsEsTBJDDyYm"
Q72 = 248
A1638559218223541770 = "poEniuhCVAJJnFDiRSYVPnysfSwEiPsnMkVYztKEKUKEntXanIFulSxjWJuKOxAlpHOkgeUAFwgXJPv"
FgzkWvrdGCtHFNiewkIYZXfDeCIQwEdsxpolCtLVfnQHtkOLBPwcZFdxaKOvaqVvbYFDBkULcxUxreK68 = 716
aAAaaaaaAAAaaAaAAAAAAaaAaaaaAAAAAaaaaAaaaaaAaaaaAAaaAaaaAaaAaAaaAA = "BmjORvwJZSvaDXlZqqwOjxFjXjwCTyFPRTrLTjTUwxitNEIqcDEXFewcrOThwFzecCMcbvJySzZoHJY"
ryxzMSeQQCyTHHmFmzPgUShulqeLNtxTuDuMOnjBQVzLlgCRZtkoTCGdnDDRDPQuCKPQPLvNsLEmAqj64 = "SvwlrymCUQwsCbZDefaqeSkmBLcQVsAQdflibniEIDqOxbULDQdrqfLQxTEImzEdDgmDbEsawyCCrne"
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = "GKMdpGLjnVCxhsQkEGhNxwiWwzNcTSoVOFFsbpmEToiDfSvSnKEzMAnCsfPygPxpaPUGXIaIXJCZOqB"
F163855921822291160 = 267
L58 = "bXReYwJFVsDqEhYIUPVNphWLhcetaKNbEtadtxaByavLtOBTKbqtYxlYXtiXdgkMQeBOgBWKKgpsAjF"
T56 = "ckWVCrwQvaPgLYccMCoOojwjqOzMqPDgviGSYkEqeiurNWVaBAzWiUEASGakqFzWVIYZRFIeLYrUqcN"
mCrbjHzNitQEgWEvxnmIVdQFLeSLWUlFLOMeTfTEdUOmtaVZwwQECNhlPYjqTsCbSCCAoPnHiKlVBZi54 = "KLSmTdxekVYNtccxCXhlhfnLHBzgOzFcOuFnvWVxtWrdyPitIcSGPnBnDTCWCcmdpkbPGGJWUNirCwH"
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq = 597
FQYDfuexrPOebmwMXxTCFvoLZscLhsZSxcSNJQVmlicoSUkzMooHUJAdtwNAYdhjGHWjgpKtjRFYnHi50 = "ABtsIHcvTRRlSeUTRhFsLUqMpyTasSmdVxBSNbWRQfWHZZYazfbMWigTuhhLrsRXNvUFCjHbLEbTFED"
w48 = "cjbgiCnkdbVbOgFjutbfyIhCviTbVxJuKvgWsIyjUPJPFgfuJCwsCeqCnCMnVMehBbUggXmnmhpLHaj"
yNmWkdtbNHpXPvDRKHByrMDVYCRFRDnvTDNOXnZtiYdYQAlCRmPEiqQuTDfuUGfvkGvcnyvtYAybElj46 = 725
aaAaAaAAaAaAAAaAAAaAaAaaaaAAaaaaAAaaaaaAaAAA = 320
jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj = "UVABIMkJEvGlylQkXdhHOWlnjnRONorPBcVDjtDUHvzfvYSKfFLjFBVFYlIrfNcOaSPdjUypysbDuMf"
v1638559218222051640 = 415
wSgfVxWPsCWSIqmOtNKaDGsXqQzYuqZUjmmMWaYSfxwDXgaADiDalzFKciHcWnplNAYEbaRetZqwYIC38 = "SYXZcXDpIxcMGySyNVDLwMVeSqxuiphlWGwnYUeyHlwArckJlLvQSsDckxKNmYRqxSgjETXTDJgfyox"
J36 = "qFrLeRUUMlzjBvHXqBURCGiszgyzphuZjQWobQcenfssnAYoRiCAFKuEYaPTadFJVsQbkomyQiBKJdX"
IlIIllIIlllIlIlIlllIIlIIlIlIllIlII = "EKxVGKgbcHAJVcwrFlKweJcByPQwKQNYBwBhBEjGsxCHzpVxqnegVNpTflycENpoUCkwFXwTkdSbUCp"
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii = 275
llIllIllIIIllIllIIlIIIlIlIllll = "uBHSDvgrNeGyQpNIVanoptSywYhmNcvbdTpoTBuHTUkFboXXfpclOdYFcVzRCkkUaIehGSWBfBMhsRE"
IlllllIIllllllIIIIllIIIllIlI = "ZGahYqbbAeyIZMBQonayCFqhxnYnVweGwUzvAXevaKnwgftVHBHZgveOIrlxlsysanpcwNCZMgzBEUK"
AaaaAaaAAAaaaAaAaAaAaAAaAA = "XWfwfiGwEZdhIAPYUQNgmlkpcKvXKkDXAWHNcGVgkXGwVwCIVXfXgebrBJfoqOtKHxQCpPmklvVpplK"
dQzibblLePYCLFQySIHAeKUEpqgwMzNvsjOmSAadYcXQALqSXBOnRrgIANTwQuaqcFlcUkHtnbUaCZA24 = "fQxwlnTGZXYFYeEpUiQTaNUUwaNJwrPYEFUEpViUeoYzKnAVtDHKXOGagokKsPxltLaGjDTZvvIRJWb"
F1638559218221316622 = "AhsHqEMElHyphHSnFIqgENrVPPxjpnTUrpaxuiPOubeFyNHCMrfyxmdsqSNBIuAzujZGHGhxXKWSbuv"
E20 = 285
AAaaaAAaAaAAaAaaAa = 94
pWuYqxTmVOkjamOpemZANqXQYzRKoXOlhcQzqzYsZCxyzoNAyOVOhgiBBusysQFoxgWenkojmHQIRDe16 = 441
AaAAAAaaaaaAaA = 582
AaAaAaaAaaAA = "erkCAoWUwVIHqypMieLQizifmNFbiauNkEUkpvprpLxWzrZliIlDQTjUZfrcgaOFkHzVimkiEtQYAlH"
nnnnnnnnnn = 759
e163855921822091948 = "vDDlaOcbUWvlydVLQWyGXkgOBbUchPJeKMPTtPKTkkfFENpQbvXRSPertwGrHmZoefgFiSTSmpavcri"
KKKKKK = "EIYMvimoLbhyyOKPkbbdVpsdybyrvirBySgNhLCLKTrEgyIDuuxUpzJmMDXIxKGKDNkKMEUymMduOqd"
aAAA = 308
nn = 211

Q163855921821412781='pymongo'
_B='requests'
_A='\n\n'
import os as IktLRSnVOtmbbIOxtmqMEVqHDCcagmEaAUJPYagouUyoNPVlwcSGgyRqqFnaGTQdlDzyruuKtZgHYBt1,re as LQpaMNZoKzOANCJaYAozdKakyjrxxxquBIzvyQdpAXvXraLGzxWRryYShZVQMHpZbnciylwtvairsKd1
from datetime import datetime
from pathlib import Path as Aa
from textwrap import dedent
from typing import Optional as WWW
from jaepeto.patterns import CIParser,ContainerParser,PyVersionDetector,detect_boto3_calls,detect_mongodb_calls,detect_requests_calls,group_imports_at_level,infer_important_functions,read_packages
from jaepeto.summaries import parse_docstrings as aaAA
from jaepeto.utils import get_line_changes_for_file as AAA,parse_config
def create_technical_doc(source_module_name,source_code_dir,technical_doc_file,repo_info=None,project_title='Project',project_summary=None):lI=source_code_dir;aAa=source_module_name;u4=technical_doc_file;write_document_intro(u4,project_title,project_summary);create_architecture_section(lI,u4);create_src_overview(aAa,lI/aAa,u4)
def write_document_intro(technical_doc_file,project_title,project_summary):
	lI=project_summary;aAa=project_title
	with open(technical_doc_file,'w')as u4:
		u4.write(f"# {(aAa+' Technical Documentation').strip()}");u4.write(f"\n\n**Last updated:** {datetime.now().strftime('%Y-%m-%d')}\\");u4.write('\n_Document generation aided by **Jaepeto**_')
		if lI:u4.write(f"\n\n{lI}")
		u4.write('\n\n* [Introduction](#introduction)');u4.write('\n* [Code Overview](#code-overview)');u4.write('\n\n## Introduction');u4.write(f"""

This is a technical document detailing
        at a high-level
        what {aAa} does, how it operates,
        and how it is built.
        It is meant for consumption internally
        by technical developers
        and managers.""");u4.write('\n\n### Scope');u4.write('\n\nThis document provides high-level summaries\n        of the project codebase.');u4.write('\n\n### Context');u4.write('\n\nThe outline of this document was generated\n        by **Jaepeto**.\n        The documentation should be reviewed\n        and detail provided manually\n        before the documentation is released.')
def create_architecture_section(source_code_dir,technical_doc_file):
	lI=technical_doc_file;aAa=source_code_dir
	with open(lI,'r')as IlllIIlIlI:u4=IlllIIlIlI.readlines()
	u4.append('\n\n## Project Architecture\n\n');t16,E=read_packages(aAa)
	if t16:
		u4.append('The project has the following data dependencies:\n')
		for I in t16:u4.append(f"\n* {I}")
	if E:
		u4[-1]+=_A;u4.append('The project has the following cloud dependencies:\n')
		for BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11 in E:u4.append(f"\n* {BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11}")
		u4[-1]+=_A
	aAaaaAAAAaAA=ContainerParser();aAaaaAAAAaAA.parse(aAa)
	if(K:=str(aAaaaAAAAaAA)):u4.append(K+_A)
	G=CIParser();G.parse(aAa)
	if(LLLLLLLLLLLLLL:=str(G)):u4.append(LLLLLLLLLLLLLL+_A)
	with open(lI,'w')as k15:k15.writelines(u4)
def create_src_overview(module_name,source_code_dir,technical_doc_file):
	G=technical_doc_file;aAa=source_code_dir
	with open(G,'r')as E:u4=E.readlines()
	u4.append('\n\n## Code Overview\n\n');IlllIIlIlI=PyVersionDetector()
	for I in aAa.glob('**/*.py'):
		with open(I,'r')as N:BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11=N.readlines()
		IlllIIlIlI.review(I,BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11)
	del BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11;u4.append(str(IlllIIlIlI)+_A);aAaaaAAAAaAA=infer_important_functions(module_name,aAa.parent);lI=len(aAaaaAAAAaAA)
	if 0<lI<=5:
		u4.append(f"There are {lI} source code objects in top-level `__main__`/`__init__`:\n\n")
		for t16 in aAaaaAAAAaAA:
			K=t16.split('.')[-1];LLLLLLLLLLLLLL=IktLRSnVOtmbbIOxtmqMEVqHDCcagmEaAUJPYagouUyoNPVlwcSGgyRqqFnaGTQdlDzyruuKtZgHYBt1.sep.join(t16.split('.')[:-1])+'.py';u4.append(f"### `{K}` from `{LLLLLLLLLLLLLL}`\n");k15=aaAA(K,LLLLLLLLLLLLLL)
			if k15:u4.append(f" \n```\n{k15}\n```\n")
			else:u4.append('\nNo documentation is present for this code.\n')
		u4.append('\nThese entrypoints are broken down into the following modules:\n\n')
	elif lI==0:u4.append(f"There are 0 source code entrypoints in top-level `__main__`/`__init__` files.\n")
	else:u4.append(f"There are {lI} source code objects\n                        in top-level `__main__`/`__init__`.\n                        They are broken down into the following modules:\n\n")
	O=group_imports_at_level(aAaaaAAAAaAA,level=2)
	for (t16,P) in O:u4.append(f"* `{t16}` has {P} entrypoints\n")
	Q,R=create_module_overview(aAa,[f"\n### **{aAa.stem}/**"],0);u4+=Q
	with open(G,'w')as E:E.writelines(u4)
def create_module_overview(module_path,doc_contents,n_calls):
	E=module_path;t16=n_calls;u4=doc_contents;aAaaaAAAAaAA=len(u4[-1].replace('\n','').split()[0])+1
	for aAa in E.glob('*'):
		if aAa.stem=='__pycache__':continue
		if aAa.is_dir():u4.append(f"\n\n{'#'*aAaaaAAAAaAA} {aAa.stem}/");u4,t16=create_module_overview(aAa,u4,t16)
	for lI in E.glob('*.py'):
		if lI.stem=='__init__':continue
		G=describe_file_architecture(lI);u4.append(f"\n\n{'#'*aAaaaAAAAaAA} {lI.stem}.py");I,BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11,IlllIIlIlI=AAA(str(lI));u4.append(dedent(f"\n            \n\nFile has {I} lines added and {BdmYGSSypJDxZwdsVGZCsjZNJkCpIFqTAigipKdOYMDGnYnixrbcujIsHnYOFyiCfzWxJzMpWgAjSdo11} lines removed\n            in the past 4 weeks."))
		if IlllIIlIlI:u4[-1]+=f" {IlllIIlIlI} is the inferred code owner."
		u4.append('\n')
		for (K,LLLLLLLLLLLLLL) in enumerate(G):
			u4.append(f"\n{LLLLLLLLLLLLLL}")
			if K!=len(G)-1:u4[-1]+='\\'
	return u4,t16
file_arch_notes={_B:'calls a REST API',Q163855921821412781:'connects to a MongoDB database','boto3':'makes connections to AWS'}
file_arch_connection_pattern={_B:detect_requests_calls,'boto3':detect_boto3_calls,Q163855921821412781:detect_mongodb_calls}
def describe_file_architecture(file_path):
	aAa=[]
	with open(file_path,'r')as t16:u4=t16.readlines()
	u4=[aAa.strip().strip('\n')for aAa in u4]
	for lI in file_arch_notes.keys():
		for E in u4:
			if LQpaMNZoKzOANCJaYAozdKakyjrxxxquBIzvyQdpAXvXraLGzxWRryYShZVQMHpZbnciylwtvairsKd1.match(f"from {lI} import .*",E):aAa=_describe_architecture(lI,u4,aAa);break
		else:
			if f"import {lI}"in u4:aAa=_describe_architecture(lI,u4,aAa)
	return aAa
def _describe_architecture(module,contents,arch_notes):
	aAa=arch_notes;u4=module;lI=f"Code within this file {file_arch_notes[u4]}."
	if u4 in file_arch_connection_pattern:lI+=f" {file_arch_connection_pattern[u4](contents)}"
	aAa.append(lI);return aAa
def generate_documentation():
	u4=Aa.cwd()/'.jaepeto.ini'
	if not u4.exists():print(f"Error running jaepeto: No config file found at {u4}")
	else:aAa=parse_config(u4);lI=(u4.parent/aAa['doc_dir']/aAa['docs']['technical_name']).with_suffix('.md');create_technical_doc(aAa['src'],u4.parent,lI,project_title=aAa['name'],project_summary=aAa['description']);print(f"Successfully generated technical documentation at {lI}")
K163855921822070841 = 444
llI = "SqMzoFZkaUQXAtPSjOzdFtucZCEuICgFNGlBLAuLxceHUHpUXTajJymtcQZzquBfIzxnWgRgEFllQWz"
AAaaA = 329
qmtLVxdxrnHExjfosDUfMkmHbJpGfXgetOhKWgrRlcoMxlhttPESRXHytXhRNJkqBlyIVSKPhcHGflZ7 = 399
X16385592182209669 = "NWHWazjotWYGXIEnHnRJNpgyTvjcvjNVMkzATGPcVDtQFNzpiGjgJeGJssTBYIglDoDakDnwAYhjKke"
aaaaAaaAaaA = "eGVZdOlNtOacjGSUDHXCAbwIVwdDgTOAHsSBFGRvxLgwvwNaeYmYmGOJpbFDdZPOfTDDVCtxgOLtWPk"
FvgAWlzqkYGNYjKKjnGqkqNSinvDfhgWjTrhKcPTyyxoyDHcRGnCsbXkBgqpPEgKlHGaTJgqVyfomBZ13 = 294
CCCCCCCCCCCCCCC = 764
aAAaaaAAAAAAAAAaa = 587
IlIlIIlllIllllIIllI = "rYbomRjDzeerhxwALcHKsEuzkVuUvQetiZuYQVadBaLncEkvqBwyApaMUQpFyMeCpgtBuLGGPdrKLMU"
v1638559218221270621 = 288
AAaAAaaAaAaAaaaAAAAAaaA = 393
vOeJvlAktiraAtgEJoOQADkKPzIEWJxihloZfzXdBvspZNPtRuQCGxMiFfiLCOugcwHpywKtvlNmeEP25 = "RgwlbxlKSkBEexhLrDnLxiHsEsZpDtgenvsNIjjOpNrbYmuhpTeVHmkZPWnzEwbRzWarxnYbelEIJjA"
TyqSsnwzTeWglFNeDYetuzEpwWgjYbHTPsaisIXpOxqmHVuoBPCFMtMgheLIaDinUzJmrsfFmLFSwXm27 = 700
X1638559218221666829 = 293
lIIIllIIIlllIIlIIlllIlIIllIlIIl = "OaMdxQAhAxNNmWKMUmCCMSKOUNvrgJTftLyAbWPsHsZjjbHGYUAZCGeHzvmvLmvLCwTeSbitaIeNLZD"
O1638559218221807733 = 747
IIIIlllIlIlIllIIIIIIlllIllIIllIIllI = 442
C37 = 305
lIlllllIllIllllllllIIIIIIIlIIlllIlIlIlI = 73
a163855921822205841 = 698
aaaaAaaAaAaaaAAaaAaAaAaaAAAaAAAaaAaAaaAaAAA = "PEkFzzQvuzbQlVhkYwcVoJaynglQYFvHqCkxfddKylMtkqpkjnOcoXTfRJCbMSbukpGVaRfiPtIuYOK"
v45 = 296
C1638559218222285347 = "IDfsHmGweZGRwZddMdlXjDHXVJEocSIckqdVOUsRjPUdHWXRpdWrqxLzWVlkRoLlKdXOGddavOVHBvc"
AAAaAaAaAAAAaaAAaAaaAaAAaAaAAaAaaaaaaAAaAaaAAaaAA = "qkEXXxQPpCPupXRDKZEdmXTVvPIHdhlbmGKOIjZVpZMdloNCCITdeLXJMxyUZXtTJmGcBtcAIjczhgC"
AaaaAAAaAAaAaaaaAAaAAaAaaAaaAaAAAaaAaaAAaaAAAAaAAAa = 577
IllIIllIlIllIllIllIIlIllllIlIIlIllIllIIIlllIIllllIIII = "oKTyvghxGEOMmunRxkOGkHjzNRonoPpndqTQbcIeJlKiVrzWcHJQliSTULOGSJKOvyTvGfTLkFSdLyd"
c1638559218222749755 = "nsdtpKWOLuqDzGsOFAMBIirpSmaUrfqRFKwyjZesOhlrxocCkrnIkXmStickysYEdVoRfHiQIJpjguz"
IIIIlIllIlIllllIIllIlllllIlIllIIIlllIIIlllIIlllllIlIllIIl = 662
aAaaAaAaAaAaaAaAAAAaaaAaaaaAAAAaAAAAAaAaAAaaaaAaAaAAAaAaaaa = 376
KzSRjufnsOtIQyBkQTjCOEYuolNaFbjZeJmaLUNoqZqadJPTJLLDrBPSnRtupkDoppVsPwOKOkyqlfG61 = "JmbVLIDDozHtRGinlbxWGqvHmsBZmKjmEFNSKZcxUOjTmxRUhmpyfcYmMjfqOCTMIIUpovHdnHNzECU"
aAAaaAaAAaaAAAAaaAAaaaAAaAAaaAAaaaAAaaaaaaAaAaaaaaAaAAAaaAaAAaA = "gRnmcVgrlLXXzLHZIfuOgnBdoBBavDzPrOtWDrBGyOgfpmeTgccEVUPasxiLuWfpaLLlErYmiIJUGzi"
aAaaaaAAAAaAAaAAAAAaAAaaaaaAaaaAaaAaAaAAAAaaaaAaAaaaaAAAAaaaAaAaa = "EWgynbGhcKLZqIxwxLDptvezARePoryoRMmCUuJFjKYJQVXBTbrDwSzhKKYwmMzivhbsSTrfVLjAfcH"
llIIIlllIllIlIlIlIlIlIIlllIIIlIlIlllIIIlllIIIlIlllIlIlllIIIIllIlIII = 377
EQpBSveiPrQpzsgAPfnXamjnrqZzuLeLqSIAdXHJCGqXFmMcnoUOQYGQgCXabVetPCpuuOlhDIYTLsE69 = "ubcNRvPvIUOrESeCEoMUcQeWcBdOPsCmSzxELdrZFgRGyrmmqtvORxExttGnPMVJCelARjToxtykDjB"
z1638559218223588771 = "imAjLMNeNGuoDBvbpWPJevbPLHUDqbKmFnVispQdGXDGrIBlGOgLwuJcNrJlIdcQIcuKHfOAssoQCdx"
a73 = 338
o75 = 477
lIIlIllIIllllIllIIIIIlIllllllIIIlIIIIllIIllIIIIIllllIIIlIlllIIllIlllllIlllIII = 311
J79 = 450
llIlIIIlIlIIllIllllIIllllllllIllllIlIIIIIlIIIlllllIllIIIlIIIlIIIlIllllIIlllIIIIIl = 414
llIIIIlllllIllllIlllIlIIllllIllIlIllllIIIlIIlIIIllIllIIIIllIIIlIlIlIIIIlIllIlIlIllI = 176
aAaaaaAAaAaAaaAAaAaAaAAaaAaaAaAaaAAaaAaaAAAaaaAaAAaAaaaAaaAaAaaAaaaaAAaaaaAAAAaAaaAaa = 305
AaAAaaAaAAAaaaAaAAaaaAAAAAAAaaAAaAAaAAaAAaAaaAAAaAaAaaAAAaaAAaAAaAaAAAaaAAaaaaAAaAAAAAA = "XuiSelMchFQRTHVCICCTrPJvgIQOELCafrLKvBjurHiatqybbrBBQEXVbyjJIPunqcaHsZPXwguuhLG"
aaaaaaaAAAaAaaAaAAAAaAAaAAAAAAaaAaAAaAAaAaAaaaAAaaAaaAaAAaaAAAAAaAaAaAaaAAAAaAaAAaAaAAaAa = 697
IIIlIIIIllIlIlIlIIIIIllIIlIlllIlllIllIllllIlllIllIIIIIlIlIIlIlIIllIlllIIllllIIIlIlllllIIlIl = "bpxEJTqKbxjRTDETnzSJwHixxgEsVFmujSizaHfIXSrfMlJYYAQiuVoDhEVhJmromfpAaSXVDLSAysM"
DWCKLfUtdkQfCNVLDHuuTbBZpYjmiZQHVzSvzJqnzcKaFkpLobhOKVpJYxcCRRkmPtSSCmIglGksDwZ93 = 401
MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = 236
I1638559218224592297 = 434
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF = 748
IlllIllIIIllIIIIlllllIIlllIIIlllIIIIIlIlllIIlIlIIIllllIllIIIIllIlIlIIIlllIIlIIlllIIllIlIIIIIlIllIlllI = 268
T103 = 368
H105 = "bbtPfKgbAjYUPxpRzSTPXhoOQDIrOOcCjXIkMHjJqWsAnwNMdAasUlRVfqwcOyHBLJgAsAfXARbUTCC"
aaAAAAAaaAAaaaaaaaAAaAaaaaAAAaAaaAAaaAAAaaaAaaAAaaAaAaaAAAAaaAAaaaaaAAaaaaaaaaAaaAAaaAAAaAaaaaAaAAAaAaaaAAA = 308
ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo = "JyFIhTBnijufVxoMoJDFbJRSgChEMYHkarFyUBknciMGuRmXsaVAgpWLAGrXiPEwTadyAwyNbkQqcka"
j111 = 343
lIIIIIllIlIIIlIIlIIIlIlIlIIlIlIIIllIIIIIIllllllIlIllIllIIlIIlIIlllIlIIllIlllllIlIllIllllIIlIllIlllllIIIIIllIIlIII = 432
IlIIlIlIIlIIllllIIIlIIlIlIlIIllllIlllIIlIllIlIlIllIIIlIllIllIlIIIlllllIlIlllllIlIlIIllIIlIIIIIIlllIIlIIllIIIIIlIIII = 459
a1638559218225418117 = 868
U119 = "DBpiKRTcQOgAqfTUmMZqpvwHmHoyuVlPXXztcaHLspPUJOINEMGlukcPDjYFFqGpwqHczELABvCOsPG"
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd = 326
eVNaacKdDciTVVkpZeIvuaWpDIjjOLOkFwpSqLROINdSDYPOuYHVhkuGaZFynsfOyGApevwqSpqXSSu123 = "qKtKRHRvARNezCIupWzCItDsVBxbJaRssRbrVCumZfMSvKKDuKlZOmLuyuirichtkwHVjHttzVcjXkf"
lIIlIllIIIllIIlIllllIIlIIIlIIllIllIlIlIIIIlIIIIIllllIllllllIllllIlIllIlllIIlllIllllllllIIlIIIllIlIllIlIllllllIlIIIllIllllIIll = 348
ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd = "GtbcgMONOBGterAPccWjczTezdOHpMCXWOqAjupuWzsxxXKYsMXAjZFxUcugXIzeGjAVCbJOXsuNxrG"
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = 354
D16385592182261112131 = 351
IlIlIlIlIllIIlIlIlIIlllIlllllIllIIIIllIlIlIIIlIIIIIIIllIIllIIIIlIIIIIlIllIlIllIllllIlIIIlIlIlllIIllIlIllIlIIllIlllIllllllIIIlIIlllIIl = "mSeRrujeARrdBDktJzOjQbgytsYtxGgjKBDPlWbBVSfzSyrJrEROiHDrCSCzhyceWuusqIpMqRVvfLd"
x135 = "fzlTlhLxWPsfFtGIjNecfBKOSVftsltnLhKLkQVmriBHQVQSnahtWerGePqjBoMothVgeLoERBmtcdM"
lIIIllllllllllIIIllIIIlIlIIllIlIIlIIIIIlIIIlllIIlIllIIlllIIlIlllIIlIIlllIIlIIIlIIlIlIlIlIIIllIIIllIIllllIlIIIIllllllIlIllIlIIlIlIlIlllllI = "TyOkAIluwmjNvYnklXDOjTpvtbpiXCUvnrwGWQxKNDyzjcAZryEmqkpvjNALUdGGIfOHSREqaJjoJRx"
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY = 301
IIIlIIlIllIIlIIIlIIlIlIIlllllllllIIIIlllIlllIIIllIlIllIlIlIlllIlIllIIlIlIlIIlIllIlIlIlIIlIIlIlIIIlIlIIlIlIIIllIIIlIIlllllIIIIIllllIIllIIIIlll = "PfKHzZuAbudTnYCcDjpaEXWzSZHUudHZKHwpvYewmzniUTGBTLTiHArWMoENdaOMUuscxHjmjYCKluL"
LjZibjfPLQrURdxIiUDKkoXUJwHYGhrrLBMdSZGKmkhfDDcGlOwgybrRYugLVaaloYcmsEIYXKcEsYE143 = "ECFfAKFXCDMmhLNLyqvozpGfqNYxLzkwmkBPZsOfWzNkuDgEKMgmqIQoatzKJdJiKDkLxUltIECxzJS"
aaAaaaAaaaAaAAAAAAaAaaaaAAAaAaAAAaAAaaAaAAAAAaAAaaaAAaaAaAaAaaAAaAaaaaAaaAAAAAAaAAaAAAaAaAAaaaaAAaAAaAaaAAAAAaaAaAaaAaaAAaaaaAaaAAaAaaAaaAaAaaaaa = 422
Z16385592182270927147 = 250
c16385592182275453149 = 545
aAAaaaaAAaaAaaaaAAaAAAAAAAaAaAAAaaaaaaaaAAAAaaaAaaAaaAaaAAaAAAaAAAAaAaAAAaaaaAAAaAaAAAaaAAaAAaAAAAaAaAAaaAAAaaaaaAaaAaaAaAAaaAaAaAAAAaaAaAaaAaaaAAAaAAa = "RXjpxKMpJyzWLnWAusrtgadrcTjvFrVKgEtlsTIuKLiTpYoWVVOHicItqmmzIOajVfIlyRKTZeZPPbG"
uDkzUVpLKiqgiMHImdpdngWVlmjRpLceREUrEAQwkxKsojdIYajETcpLwCcFFoKnFSlfNZdPbuYDEsJ153 = "IrxeHJKbMppucrVwdenGGnMWIzildPkSGRmcUOAfMtXYrDRKcJpVbLWlCaCsBUiAEjTHIthXvDlNxEd"
F16385592182279575155 = "RZKFvBcPcyuHpAyLkbkSyLhQFJrWXFAGfTypVlqpVgknvbOOMSoACqOWfTPkggRRemsZIgcvGhlnnpQ"
cqpKeuRYgbNjqVhuFhhMzAOpDtUDLCLtsdfKEHEDmdKrXNQWmosXUSTXNCMIvGiScHykIWzGvZVbMPK157 = "tCUEBKMHhFaHecgrIvvUJstPWWGxhRMbABdMcDZGcuVeOalYqhmjwTjYjdGBiXWypbfqEbJHakOKPvZ"
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB = "baNWJSgcDqlMuKneQEYnVqcGxOnOdsyrHspDHbfZwQbKxDoaslKYBCKbaYeMfGnGDgLlPaYLlPKVPsC"
lIIlIIllIlllIIllIlllIIIIIIIllllllIIIIllllIIIIlIlIlIlIllIIllIlIlIIlIIIllIIlllIllIIllllIllIIlIIllIlIlllIllIIllllllIlllIllllIllIllllllIllIlIlIIlIIIlIlllIlIIIIlIlIll = 273
E163 = 664
AAAAaAAAAAAAAaAAAAaaaaAaAaAaAAAAaAaaaaaaaaAaAAaaAAAAaaaaaaaaaaaaaAaAAAAAAAaaAAaaaAAAaaaaaaaAAaaaaAAAaAaaaAaaaaAAaaAaAaaaAAAAAaaAaaAAAAAAaAaaAAaaaAaAAAaAaAAAAAaAAaAaa = "xNNPfiHiaXWNLncKwcizQRvDvrIzTtQuiqMuCaDFVYvJBUjGnuGYVdxfRsJULiPOMHtIcXUkSCCsOHs"