From 78829e73911c257b20a0e303e90798b9b1533d76 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Wed, 3 May 2023 14:59:06 +0200 Subject: [PATCH] chore: go crazy --- .gitignore | 161 +++++++ .vscode/extensions.json | 7 +- examples/table1.pdf | Bin 0 -> 4532 bytes examples/table1.tex | 14 + program/code/__init__.py | 0 program/code/latex_classes/__init__.py | 0 program/code/latex_classes/latex_classes.py | 446 ++++++++++++++++++ program/code/main.py | 12 + program/ecote/bin/Activate.ps1 | 247 ++++++++++ program/ecote/bin/activate | 69 +++ program/ecote/bin/activate.csh | 26 + program/ecote/bin/activate.fish | 69 +++ program/ecote/bin/coverage | 8 + program/ecote/bin/coverage3 | 8 + program/ecote/bin/pip | 8 + program/ecote/bin/pip3 | 8 + program/ecote/bin/py.test | 8 + program/ecote/bin/pytest | 8 + program/ecote/bin/python | 1 + program/ecote/bin/python3 | 1 + program/ecote/lib64 | 1 + program/ecote/pyvenv.cfg | 3 + program/tests/__init__.py | 0 program/tests/conftest.py | 0 program/tests/test_code/__init__.py | 0 .../tests/test_code/test_document_class.py | 20 + 26 files changed, 1123 insertions(+), 2 deletions(-) create mode 100644 examples/table1.pdf create mode 100644 examples/table1.tex create mode 100644 program/code/__init__.py create mode 100644 program/code/latex_classes/__init__.py create mode 100644 program/code/latex_classes/latex_classes.py create mode 100644 program/code/main.py create mode 100644 program/ecote/bin/Activate.ps1 create mode 100644 program/ecote/bin/activate create mode 100644 program/ecote/bin/activate.csh create mode 100644 program/ecote/bin/activate.fish create mode 100755 program/ecote/bin/coverage create mode 100755 program/ecote/bin/coverage3 create mode 100755 program/ecote/bin/pip create mode 100755 program/ecote/bin/pip3 create mode 100755 program/ecote/bin/py.test create mode 100755 program/ecote/bin/pytest create mode 120000 program/ecote/bin/python create mode 120000 program/ecote/bin/python3 create mode 120000 program/ecote/lib64 create mode 100644 program/ecote/pyvenv.cfg create mode 100644 program/tests/__init__.py create mode 100644 program/tests/conftest.py create mode 100644 program/tests/test_code/__init__.py create mode 100644 program/tests/test_code/test_document_class.py diff --git a/.gitignore b/.gitignore index 859f705b..e2288ef3 100644 --- a/.gitignore +++ b/.gitignore @@ -274,3 +274,164 @@ TSWLatexianTemp* # Makeindex log files *.lpz + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 68530c2a..ab97a6eb 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -3,11 +3,14 @@ "mhutchie.git-graph", "pkief.material-icon-theme", "ms-python.black-formatter", - "ms-python.pylint", "ms-python.python", "wesbos.theme-cobalt2", "donjayamanne.githistory", "kisstkondoros.vscode-gutter-preview", - "james-yu.latex-workshop" + "james-yu.latex-workshop", + "danielsanmedium.dscodegpt", + "ms-ceintl.vscode-language-pack-pl", + "ms-python.pylint", + "tomoki1207.pdf" ] } \ No newline at end of file diff --git a/examples/table1.pdf b/examples/table1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..7c7c02011ab45c63f30abd53d32b7c58730c82bc GIT binary patch literal 4532 zcma);GjHac`_6smz5mwi*|YZS`POgdTLK1f4Kc`FDO!Qm@7u?;(f}~P z9qCLfFAvhdy5b$YKpL(HyaU_;<&Jg$={Vq=@ECxEtc0Q>?L)km1Hz5gZ#KfD8P^G> zpFh2JcBzC#*pP+EPiTaFgMGq!G*5Fpk5l~MNW167t>}z4Cg3RW`A0b}y`{GP6#yT6 zNYG)LTj2YhE$X*0zd+9fT}Si=!wY1N8iqr6m2BZ0g%S%IP<5HvT$F|b4J#6tzxo_> zS-Ma0Y3gl?czz1@asNKwPD8)Ow&WhZ*P|hO+0i9+>(})~M00|eTu#cqCe-WhPxC;Q z8~!u!8KG;iI^mdEqBm-z8ZpdT%In2N58+4-h29K4@Cg2lyz}E*K_eM=PT%wV5h*X~ z*P3}5{3Uk9ELiGD_7%qnkF>KZFf9o3E@LmhF0GcmZcEa$Sbsh{l@>9(Jwf!H^ia}5 z-aOtMcTh?SFF0lrkU;KY%11YcmLz@gIQM9naBIrJq%=-qvmVw6iw>E|^EY$yEkL&0 z^jY{qu73MAZ{4+M-EMlg30o^791{wi1RoHK&r#YB)#ejkI{p->?0J&z`OZvGv*5&+ zM(y5QREah;`eKp-u4e028ERJ8j+$5k`1XmW&WzA?$sO+qdH;E z20e*NF9e|_DrM_AYEo)(>HA?HZf-4WRBTN*lxzA{JAgjbit|sFPGmfK!TPWi2wAf^ zd&}W`RYI5m9tH%m(`T_+T?W%LypN*aV&OwLZk#T&(J4;&@UyEk6dl7 zoa^cWtcuHlVdb;8&}4=Ba}S9I5EK! zE@~gkLpXEBoPJhhNq-Yv6}&L4Z$L%81A87F9(s#ig)zvfN9yh*L~ z)Z?Os62dk05oFQ)Xs!6bv!vr0iKECQV9TnxUBmw0{RIo;IO{*8zm%N5^xbyoe+ ziq%)5;dZKKfC|9qebGItYKEC8SJf|xKzQ^!{u^-6YSC(i0dPXU_zDzw<=O`2;*%w^ zTm#{o*V5p(Vgb@)%S6RgC_7wAiW-fI=<^5qs}v^%he zmj0|KwkR?z6b{!Ag*HS4m!xZ{@kOxc@}x2;_mu%;ec6;G5r->t!ITr+Ph&G&-Jzz- zo%*)-E#dh&)}a;C`CFfLl2FOlNgGNxWJiOl-?rtvjJ0CBz1yQr3Rd?5Wh5dF ze~OGZwC1@g{R$ptvN2Pos96^+*H-wRLzjOTPS04%6Z)K&2(+f26ptGGFrb-y+ihT0 ztxew$m#ki@p(G}E%nm)tpx!<2 zpvY(H(o;IRJ=$pS_Un0*z#m^$JcOT}HLcHQ$GaB$7-0v;S9^V@(yZTbIWs=q)A~e< z^OBA9c==w~cfCzn=tu<%Wv1r@(|dP@zUfru7^WI%p=vO50b}ZLVV|~q0%&%$M?q*t zChQGFt@a3v;)qc`9N(7M+6pEq^Fl=2c&8)Xbrt8aK&fB$S!xVHEGev#i@NVSb-!Nj zblS~5i}YuTXb&>5&@X>Fj-FSfNw?mMTfcIi>BXSW8@8<8R*9s#`!k;)@FXY1-JNE+ zw|BgHXrg|wt{}jH zo9Ahuxtd{Dtbmn_JH?h~5KHAPphS!hMA4raQ|t!7+kPxPIQ9(-`y_XS-+a@{&&}QK zEqh2!Cq${og%Iv-Snc;UUzgaF@|j^Pvalg?tFs zb_b<={=cSp0NxbplQ5+lDkT}T) zo@HnCu(SckON16dG{0IJJwCfG=OtQ6d7%vfT(oH5KrcDhF7sg&wV&_tx((XiM<1)5 zuy6Dmfewsa<-mK8jD&$S}CaiLn&?vXo z)bpVnrk@uNdKcckR_Nq35m|en=FnPoE8x=e4&myDuR9xGbum29O3M)im-E$clKThz zsCom=^2?r8nLaWn15{k@K3G+#Wlyr&qf@~#AjGB{TH9_+Yl*bmrPJl3R>qw1VuE80 zHBzJ+qB60#WNAx5WX*c)MasS6yYqgLh1Ih$hs)3tp6_y3WenCv8W+Cm}9_yhqdrJVHnIO6^=8FNmRvJaJNigrtT`r4WaqYC*-wf@RO|8dHkXWl{o8nqJz-S}|ZO8m77DO6GArt&vo z7F9O6p~3UCH4c2=T*bY6?CJ8__C|i>-Om+{PX#LP@-_NzcrjgC&m_718qpSoSDA<1 zGaB%%x}5)-c_I!@bMMQvr8t$CB-SmE-)rv&%(Yy!OrDYL>pBzjd^U9C_T9o-Xv~_J zZB~f=NSaxdhKn!ezSOLxajLN%`?@Jc>$7G5ntlc&SJ%&1ZHD{zQ&=rNPRZM12Md9S zD@VDq&C~u_v=v@SE!H}VVcZvAVcp3&ki;Jb{>**rv*z9fX~jOLwe}a$fh@7wnJdGS zy+#+Dr#4Z2-Q}ebvoS0w;eJ|d6)*M3#sFW7+5ssG2wz!Z9z*1h7bcs~ucDqwvKd2P zUhsYEx*$)JF_roc5-9nn1pe>KmH5BOo{PQx5>tW!n_23M_R2Q(OJr=aPFR=Ro)$g#n+Fq4&yzh3VxL?r(`=LM8>OE*u0{gg$Q{GMn}H_sylnk zKA;Y*h&AgA%sc_%EF4~e#G_{U2oWbNDxgL?lk62(@y1We{^6+1(}h=Vb?Y*9Yx?7Y z3r*=QRZ+;e)cf2n+(4}!Eny}^5@!D+e9HovfEn+&%pBPj7D=T-L}YJ-Kj#;I33eTa z&*!$^gBRDO0+Ka=f_&L5&y!xkI!0^lhD>kLCIU%U4=HLUmy56iwuF`)?p{Hxn;hv3 zS7&1v*lgKkYvpxQ)Gc^A|5ap#o;S)jc5kN6bzObIq+n6@p?>{vut{23j5tY59NB=; z3u?l)exA)J;K8N_o~M<`m{#2`KHL8}HMpY!@7?)@saHG7p8f16T`r?&9DeDC*<&7$ z-02wS6Pl3hb5ey{VkB^*F%EPdlgTM6`=2*01aPYS;PrI;ddiZVsECT@K5X3;p|WL!|!4bXyoX zID$0c*77I>R2GSVprNv81R4Q>pukenD2Swl1WFtw3z2YC{J(G5f{fhV@wAZNPZ)tT zagOeQKUOs(kTLd=0{|ioGPj2OJ`uP5r}&8fH9Z3TRm@KSY!ssk$^wWiEtY}m>$H`; z`(JO%fh_Dv@I2X>MB@x&e5HYPHt<8Xw*OOxy3+?e Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove VIRTUAL_ENV_PROMPT altogether. + if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { + Remove-Item -Path env:VIRTUAL_ENV_PROMPT + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } + $env:VIRTUAL_ENV_PROMPT = $Prompt +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/program/ecote/bin/activate b/program/ecote/bin/activate new file mode 100644 index 00000000..4719e1c9 --- /dev/null +++ b/program/ecote/bin/activate @@ -0,0 +1,69 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/kuchy/ecote/project/ECOTE/program/ecote" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(ecote) ${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT="(ecote) " + export VIRTUAL_ENV_PROMPT +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/program/ecote/bin/activate.csh b/program/ecote/bin/activate.csh new file mode 100644 index 00000000..fc362f54 --- /dev/null +++ b/program/ecote/bin/activate.csh @@ -0,0 +1,26 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/kuchy/ecote/project/ECOTE/program/ecote" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(ecote) $prompt" + setenv VIRTUAL_ENV_PROMPT "(ecote) " +endif + +alias pydoc python -m pydoc + +rehash diff --git a/program/ecote/bin/activate.fish b/program/ecote/bin/activate.fish new file mode 100644 index 00000000..4b119c5d --- /dev/null +++ b/program/ecote/bin/activate.fish @@ -0,0 +1,69 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/); you cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + set -e _OLD_FISH_PROMPT_OVERRIDE + # prevents error when using nested fish instances (Issue #93858) + if functions -q _old_fish_prompt + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/kuchy/ecote/project/ECOTE/program/ecote" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "(ecote) " (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" + set -gx VIRTUAL_ENV_PROMPT "(ecote) " +end diff --git a/program/ecote/bin/coverage b/program/ecote/bin/coverage new file mode 100755 index 00000000..8d6b4f29 --- /dev/null +++ b/program/ecote/bin/coverage @@ -0,0 +1,8 @@ +#!/home/kuchy/ecote/project/ECOTE/program/ecote/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from coverage.cmdline import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/program/ecote/bin/coverage3 b/program/ecote/bin/coverage3 new file mode 100755 index 00000000..8d6b4f29 --- /dev/null +++ b/program/ecote/bin/coverage3 @@ -0,0 +1,8 @@ +#!/home/kuchy/ecote/project/ECOTE/program/ecote/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from coverage.cmdline import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/program/ecote/bin/pip b/program/ecote/bin/pip new file mode 100755 index 00000000..02e6cb12 --- /dev/null +++ b/program/ecote/bin/pip @@ -0,0 +1,8 @@ +#!/home/kuchy/ecote/project/ECOTE/program/ecote/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/program/ecote/bin/pip3 b/program/ecote/bin/pip3 new file mode 100755 index 00000000..02e6cb12 --- /dev/null +++ b/program/ecote/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/kuchy/ecote/project/ECOTE/program/ecote/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/program/ecote/bin/py.test b/program/ecote/bin/py.test new file mode 100755 index 00000000..c1026935 --- /dev/null +++ b/program/ecote/bin/py.test @@ -0,0 +1,8 @@ +#!/home/kuchy/ecote/project/ECOTE/program/ecote/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pytest import console_main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(console_main()) diff --git a/program/ecote/bin/pytest b/program/ecote/bin/pytest new file mode 100755 index 00000000..c1026935 --- /dev/null +++ b/program/ecote/bin/pytest @@ -0,0 +1,8 @@ +#!/home/kuchy/ecote/project/ECOTE/program/ecote/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pytest import console_main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(console_main()) diff --git a/program/ecote/bin/python b/program/ecote/bin/python new file mode 120000 index 00000000..b8a0adbb --- /dev/null +++ b/program/ecote/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/program/ecote/bin/python3 b/program/ecote/bin/python3 new file mode 120000 index 00000000..ae65fdaa --- /dev/null +++ b/program/ecote/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/program/ecote/lib64 b/program/ecote/lib64 new file mode 120000 index 00000000..7951405f --- /dev/null +++ b/program/ecote/lib64 @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/program/ecote/pyvenv.cfg b/program/ecote/pyvenv.cfg new file mode 100644 index 00000000..4b27d480 --- /dev/null +++ b/program/ecote/pyvenv.cfg @@ -0,0 +1,3 @@ +home = /usr/bin +include-system-site-packages = false +version = 3.10.10 diff --git a/program/tests/__init__.py b/program/tests/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/program/tests/conftest.py b/program/tests/conftest.py new file mode 100644 index 00000000..e69de29b diff --git a/program/tests/test_code/__init__.py b/program/tests/test_code/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/program/tests/test_code/test_document_class.py b/program/tests/test_code/test_document_class.py new file mode 100644 index 00000000..7b63df74 --- /dev/null +++ b/program/tests/test_code/test_document_class.py @@ -0,0 +1,20 @@ +""" + Tests document class function +""" +from code.main import document_class + + +# Write python tests for a function translating LaTeX documentclass to html +def test_document_class(): + """ + Given + When + Then + """ + assert document_class("") == "Error! No input given to document_class function" + assert document_class("\\documentclass{article}") == "" + assert document_class("\\documentclass{article") == "Error! documentclass curly bracket not closed!" + assert document_class("\\documentclass[12pt]{article}") == "Error! documentclass has optional parameters!" + assert document_class("\\documentclassarticle}") == "Error! documentclass curly bracket not opened!" + assert document_class("\\documentclas{article}") == "Error! documentclass command misspeled!" + assert document_class("\\documentclass{idonotexist}") == "Error! class idonotexist is not known!"