diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b47e713 --- /dev/null +++ b/LICENSE @@ -0,0 +1,4 @@ +License agreement for SCADA - controls-py +========================================= +This LICENSE AGREEMENT is between Anna's paws and Anna's desire +to do homework diff --git a/README.md b/README.md index b6cee21..446a32f 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,46 @@ # advanced-python-homework-2023 +## 1. The sequence of commands to create the virtual enviroment: +```sh +sudo apt install python3.10-venv +cd advanced-python-homework-2023 +python3 -m vemv devenv +source devenv/bin/activate +python3 -m pip install sphinx +python3 -m pip install Pylint +python3 -m pip install MyPy +deactivate +``` +## 2. The sequence of commands to create the automated sphinx documentation: +```sh +cd advanced-python-homework-2023 +mkdir doc +cd doc +sphinx-quickstart +cd .. +sphinx-apidoc -o doc . +cd doc +rm modules.rst +rm setup.rst +``` +Move controls.rst to the source. +``` +cd source +vim conf.py +``` +import os +import sys + +sys.path.insert(0, os.path.abspath(os.path.join("..", ".."))) + +extensions = ['sphinx.ext.autodoc'] +``` +vim index.rst +``` +./controls.rst +``` +cd .. +make html +``` +Open file://wsl.localhost/Ubuntu/home/zefirka/advanced-python-homework-2023/doc/build/html/index.html +***Tadam*** diff --git a/controls/__init__.py b/controls/__init__.py new file mode 100644 index 0000000..a60af85 --- /dev/null +++ b/controls/__init__.py @@ -0,0 +1,4 @@ +""" +The package 'controls' is intended for SCAD systems (Supervisory Control and Data Acquisition). +Concept of Scada is the automated development of control systems. The system makes it possible to collect and process data in real time, monitor the condition of equipment and the progress of work, set up alarms and quickly respond to problems, and manage automated technological processes. +""" diff --git a/devenv/bin/Activate.ps1 b/devenv/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/devenv/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> 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/devenv/bin/activate b/devenv/bin/activate new file mode 100644 index 0000000..9413d22 --- /dev/null +++ b/devenv/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/zefirka/advanced-python-homework-2023/devenv" +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="(devenv) ${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT="(devenv) " + 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/devenv/bin/activate.csh b/devenv/bin/activate.csh new file mode 100644 index 0000000..f5a7e56 --- /dev/null +++ b/devenv/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/zefirka/advanced-python-homework-2023/devenv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(devenv) $prompt" + setenv VIRTUAL_ENV_PROMPT "(devenv) " +endif + +alias pydoc python -m pydoc + +rehash diff --git a/devenv/bin/activate.fish b/devenv/bin/activate.fish new file mode 100644 index 0000000..3c56a3b --- /dev/null +++ b/devenv/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/zefirka/advanced-python-homework-2023/devenv" + +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) "(devenv) " (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 "(devenv) " +end diff --git a/devenv/bin/dmypy b/devenv/bin/dmypy new file mode 100755 index 0000000..41e9dbd --- /dev/null +++ b/devenv/bin/dmypy @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mypy.dmypy.client import console_entry +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(console_entry()) diff --git a/devenv/bin/docutils b/devenv/bin/docutils new file mode 100755 index 0000000..521408b --- /dev/null +++ b/devenv/bin/docutils @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from docutils.__main__ import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/epylint b/devenv/bin/epylint new file mode 100755 index 0000000..3ffb9fb --- /dev/null +++ b/devenv/bin/epylint @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pylint import run_epylint +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(run_epylint()) diff --git a/devenv/bin/get_gprof b/devenv/bin/get_gprof new file mode 100755 index 0000000..2145c3b --- /dev/null +++ b/devenv/bin/get_gprof @@ -0,0 +1,62 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# +# Author: Mike McKerns (mmckerns @caltech and @uqfoundation) +# Copyright (c) 2008-2016 California Institute of Technology. +# Copyright (c) 2016-2023 The Uncertainty Quantification Foundation. +# License: 3-clause BSD. The full license text is available at: +# - https://github.com/uqfoundation/dill/blob/master/LICENSE +''' +build profile graph for the given instance + +running: + $ get_gprof + +executes: + gprof2dot -f pstats .prof | dot -Tpng -o .call.png + +where: + are arguments for gprof2dot, such as "-n 5 -e 5" + is code to create the instance to profile + is the class of the instance (i.e. type(instance)) + +For example: + $ get_gprof -n 5 -e 1 "import numpy; numpy.array([1,2])" + +will create 'ndarray.call.png' with the profile graph for numpy.array([1,2]), +where '-n 5' eliminates nodes below 5% threshold, similarly '-e 1' eliminates +edges below 1% threshold +''' + +import sys +# grab args for gprof2dot +args = sys.argv[1:-1] +args = ' '.join(args) +# last arg builds the object +obj = sys.argv[-1] +obj = obj.split(';') +# multi-line prep for generating an instance +for line in obj[:-1]: + exec(line) +# one-line generation of an instance +obj = eval(obj[-1]) + +# get object 'name' +objtype = type(obj) +name = getattr(objtype, '__name__', getattr(objtype, '__class__', objtype)) + +# profile dumping an object +import dill +import os +import cProfile +#name = os.path.splitext(os.path.basename(__file__))[0] +cProfile.run("dill.dumps(obj)", filename="%s.prof" % name) +msg = "gprof2dot -f pstats %s %s.prof | dot -Tpng -o %s.call.png" % (args, name, name) +os.system(msg) + +# get stats +f_prof = "%s.prof" % name +import pstats +stats = pstats.Stats(f_prof, stream=sys.stdout) +stats.strip_dirs().sort_stats('cumtime') +stats.print_stats(20) #XXX: save to file instead of print top 20? +os.remove(f_prof) diff --git a/devenv/bin/get_objgraph b/devenv/bin/get_objgraph new file mode 100755 index 0000000..e7255e4 --- /dev/null +++ b/devenv/bin/get_objgraph @@ -0,0 +1,54 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# +# Author: Mike McKerns (mmckerns @caltech and @uqfoundation) +# Copyright (c) 2008-2016 California Institute of Technology. +# Copyright (c) 2016-2023 The Uncertainty Quantification Foundation. +# License: 3-clause BSD. The full license text is available at: +# - https://github.com/uqfoundation/dill/blob/master/LICENSE +""" +display the reference paths for objects in ``dill.types`` or a .pkl file + +Notes: + the generated image is useful in showing the pointer references in + objects that are or can be pickled. Any object in ``dill.objects`` + listed in ``dill.load_types(picklable=True, unpicklable=True)`` works. + +Examples:: + + $ get_objgraph ArrayType + Image generated as ArrayType.png +""" + +import dill as pickle +#pickle.debug.trace(True) +#import pickle + +# get all objects for testing +from dill import load_types +load_types(pickleable=True,unpickleable=True) +from dill import objects + +if __name__ == "__main__": + import sys + if len(sys.argv) != 2: + print ("Please provide exactly one file or type name (e.g. 'IntType')") + msg = "\n" + for objtype in list(objects.keys())[:40]: + msg += objtype + ', ' + print (msg + "...") + else: + objtype = str(sys.argv[-1]) + try: + obj = objects[objtype] + except KeyError: + obj = pickle.load(open(objtype,'rb')) + import os + objtype = os.path.splitext(objtype)[0] + try: + import objgraph + objgraph.show_refs(obj, filename=objtype+'.png') + except ImportError: + print ("Please install 'objgraph' to view object graphs") + + +# EOF diff --git a/devenv/bin/isort b/devenv/bin/isort new file mode 100755 index 0000000..f51b0f4 --- /dev/null +++ b/devenv/bin/isort @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from isort.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/isort-identify-imports b/devenv/bin/isort-identify-imports new file mode 100755 index 0000000..4f40dc4 --- /dev/null +++ b/devenv/bin/isort-identify-imports @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from isort.main import identify_imports_main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(identify_imports_main()) diff --git a/devenv/bin/mypy b/devenv/bin/mypy new file mode 100755 index 0000000..2129e72 --- /dev/null +++ b/devenv/bin/mypy @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mypy.__main__ import console_entry +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(console_entry()) diff --git a/devenv/bin/mypyc b/devenv/bin/mypyc new file mode 100755 index 0000000..6ce780a --- /dev/null +++ b/devenv/bin/mypyc @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mypyc.__main__ import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/normalizer b/devenv/bin/normalizer new file mode 100755 index 0000000..0e7358b --- /dev/null +++ b/devenv/bin/normalizer @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer.cli.normalizer import cli_detect +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_detect()) diff --git a/devenv/bin/pip b/devenv/bin/pip new file mode 100755 index 0000000..5a68f33 --- /dev/null +++ b/devenv/bin/pip @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/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/devenv/bin/pip3 b/devenv/bin/pip3 new file mode 100755 index 0000000..5a68f33 --- /dev/null +++ b/devenv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/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/devenv/bin/pip3.10 b/devenv/bin/pip3.10 new file mode 100755 index 0000000..5a68f33 --- /dev/null +++ b/devenv/bin/pip3.10 @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/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/devenv/bin/pybabel b/devenv/bin/pybabel new file mode 100755 index 0000000..4706615 --- /dev/null +++ b/devenv/bin/pybabel @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from babel.messages.frontend import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/pygmentize b/devenv/bin/pygmentize new file mode 100755 index 0000000..db18584 --- /dev/null +++ b/devenv/bin/pygmentize @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pygments.cmdline import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/pylint b/devenv/bin/pylint new file mode 100755 index 0000000..9eb2ccd --- /dev/null +++ b/devenv/bin/pylint @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pylint import run_pylint +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(run_pylint()) diff --git a/devenv/bin/pylint-config b/devenv/bin/pylint-config new file mode 100755 index 0000000..f4e647b --- /dev/null +++ b/devenv/bin/pylint-config @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pylint import _run_pylint_config +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(_run_pylint_config()) diff --git a/devenv/bin/pyreverse b/devenv/bin/pyreverse new file mode 100755 index 0000000..aa11b6e --- /dev/null +++ b/devenv/bin/pyreverse @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pylint import run_pyreverse +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(run_pyreverse()) diff --git a/devenv/bin/python b/devenv/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/devenv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/devenv/bin/python3 b/devenv/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/devenv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/devenv/bin/python3.10 b/devenv/bin/python3.10 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/devenv/bin/python3.10 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/devenv/bin/rst2html.py b/devenv/bin/rst2html.py new file mode 100755 index 0000000..0bbdcc4 --- /dev/null +++ b/devenv/bin/rst2html.py @@ -0,0 +1,23 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2html.py 9115 2022-07-28 17:06:24Z milde $ +# Author: David Goodger +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing HTML. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates (X)HTML documents from standalone reStructuredText ' + 'sources. ' + default_description) + +publish_cmdline(writer_name='html', description=description) diff --git a/devenv/bin/rst2html4.py b/devenv/bin/rst2html4.py new file mode 100755 index 0000000..39653b6 --- /dev/null +++ b/devenv/bin/rst2html4.py @@ -0,0 +1,26 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2html4.py 9115 2022-07-28 17:06:24Z milde $ +# Author: David Goodger +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing (X)HTML. + +The output conforms to XHTML 1.0 transitional +and almost to HTML 4.01 transitional (except for closing empty tags). +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates (X)HTML documents from standalone reStructuredText ' + 'sources. ' + default_description) + +publish_cmdline(writer_name='html4', description=description) diff --git a/devenv/bin/rst2html5.py b/devenv/bin/rst2html5.py new file mode 100755 index 0000000..e7bea82 --- /dev/null +++ b/devenv/bin/rst2html5.py @@ -0,0 +1,33 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# :Copyright: © 2015 Günter Milde. +# :License: Released under the terms of the `2-Clause BSD license`_, in short: +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. +# This file is offered as-is, without any warranty. +# +# .. _2-Clause BSD license: https://opensource.org/licenses/BSD-2-Clause +# +# Revision: $Revision: 9021 $ +# Date: $Date: 2022-03-04 16:54:22 +0100 (Fr, 04. Mär 2022) $ + +""" +A minimal front end to the Docutils Publisher, producing HTML 5 documents. + +The output is also valid XML. +""" + +try: + import locale # module missing in Jython + locale.setlocale(locale.LC_ALL, '') +except locale.Error: + pass + +from docutils.core import publish_cmdline, default_description + +description = ('Generates HTML5 documents from standalone ' + 'reStructuredText sources.\n' + + default_description) + +publish_cmdline(writer_name='html5', description=description) diff --git a/devenv/bin/rst2latex.py b/devenv/bin/rst2latex.py new file mode 100755 index 0000000..2d5fabe --- /dev/null +++ b/devenv/bin/rst2latex.py @@ -0,0 +1,26 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2latex.py 9115 2022-07-28 17:06:24Z milde $ +# Author: David Goodger +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing LaTeX. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline + +description = ('Generates LaTeX documents from standalone reStructuredText ' + 'sources. ' + 'Reads from (default is stdin) and writes to ' + ' (default is stdout). See ' + ' for ' + 'the full reference.') + +publish_cmdline(writer_name='latex', description=description) diff --git a/devenv/bin/rst2man.py b/devenv/bin/rst2man.py new file mode 100755 index 0000000..a2a86ec --- /dev/null +++ b/devenv/bin/rst2man.py @@ -0,0 +1,27 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# Author: +# Contact: grubert@users.sf.net +# Copyright: This module has been placed in the public domain. + +""" +man.py +====== + +This module provides a simple command line interface that uses the +man page writer to output from ReStructuredText source. +""" + +import locale +try: + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description +from docutils.writers import manpage + +description = ("Generates plain unix manual documents. " + + default_description) + +publish_cmdline(writer=manpage.Writer(), description=description) diff --git a/devenv/bin/rst2odt.py b/devenv/bin/rst2odt.py new file mode 100755 index 0000000..0aeee7a --- /dev/null +++ b/devenv/bin/rst2odt.py @@ -0,0 +1,28 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2odt.py 9115 2022-07-28 17:06:24Z milde $ +# Author: Dave Kuhlman +# Copyright: This module has been placed in the public domain. + +""" +A front end to the Docutils Publisher, producing OpenOffice documents. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline_to_binary, default_description +from docutils.writers.odf_odt import Writer, Reader + + +description = ('Generates OpenDocument/OpenOffice/ODF documents from ' + 'standalone reStructuredText sources. ' + default_description) + + +writer = Writer() +reader = Reader() +output = publish_cmdline_to_binary(reader=reader, writer=writer, + description=description) diff --git a/devenv/bin/rst2odt_prepstyles.py b/devenv/bin/rst2odt_prepstyles.py new file mode 100755 index 0000000..17d7c94 --- /dev/null +++ b/devenv/bin/rst2odt_prepstyles.py @@ -0,0 +1,20 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# Copyright: This module has been placed in the public domain. + +""" +Adapt a word-processor-generated styles.odt for odtwriter use: + +Drop page size specifications from styles.xml in STYLE_FILE.odt. +See https://docutils.sourceforge.io/docs/user/odt.html#page-size + +Provisional backwards compatibility stub (to be removed in Docutils >= 0.21). + +The actual code moved to the "docutils" library package and can be started +with ``python -m docutils.writers.odf_odt.prepstyles``. +""" + +from docutils.writers.odf_odt import prepstyles + +if __name__ == '__main__': + prepstyles.main() diff --git a/devenv/bin/rst2pseudoxml.py b/devenv/bin/rst2pseudoxml.py new file mode 100755 index 0000000..b3daa82 --- /dev/null +++ b/devenv/bin/rst2pseudoxml.py @@ -0,0 +1,23 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2pseudoxml.py 9115 2022-07-28 17:06:24Z milde $ +# Author: David Goodger +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing pseudo-XML. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates pseudo-XML from standalone reStructuredText ' + 'sources (for testing purposes). ' + default_description) + +publish_cmdline(description=description) diff --git a/devenv/bin/rst2s5.py b/devenv/bin/rst2s5.py new file mode 100755 index 0000000..dbee41b --- /dev/null +++ b/devenv/bin/rst2s5.py @@ -0,0 +1,24 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2s5.py 9115 2022-07-28 17:06:24Z milde $ +# Author: Chris Liechti +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing HTML slides using +the S5 template system. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates S5 (X)HTML slideshow documents from standalone ' + 'reStructuredText sources. ' + default_description) + +publish_cmdline(writer_name='s5', description=description) diff --git a/devenv/bin/rst2xetex.py b/devenv/bin/rst2xetex.py new file mode 100755 index 0000000..47bd66f --- /dev/null +++ b/devenv/bin/rst2xetex.py @@ -0,0 +1,27 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2xetex.py 9115 2022-07-28 17:06:24Z milde $ +# Author: Guenter Milde +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing Lua/XeLaTeX code. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline + +description = ('Generates LaTeX documents from standalone reStructuredText ' + 'sources for compilation with the Unicode-aware TeX variants ' + 'XeLaTeX or LuaLaTeX. ' + 'Reads from (default is stdin) and writes to ' + ' (default is stdout). See ' + ' for ' + 'the full reference.') + +publish_cmdline(writer_name='xetex', description=description) diff --git a/devenv/bin/rst2xml.py b/devenv/bin/rst2xml.py new file mode 100755 index 0000000..99b2560 --- /dev/null +++ b/devenv/bin/rst2xml.py @@ -0,0 +1,23 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rst2xml.py 9115 2022-07-28 17:06:24Z milde $ +# Author: David Goodger +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing Docutils XML. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates Docutils-native XML from standalone ' + 'reStructuredText sources. ' + default_description) + +publish_cmdline(writer_name='xml', description=description) diff --git a/devenv/bin/rstpep2html.py b/devenv/bin/rstpep2html.py new file mode 100755 index 0000000..daa3b15 --- /dev/null +++ b/devenv/bin/rstpep2html.py @@ -0,0 +1,25 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 + +# $Id: rstpep2html.py 9115 2022-07-28 17:06:24Z milde $ +# Author: David Goodger +# Copyright: This module has been placed in the public domain. + +""" +A minimal front end to the Docutils Publisher, producing HTML from PEP +(Python Enhancement Proposal) documents. +""" + +try: + import locale + locale.setlocale(locale.LC_ALL, '') +except Exception: + pass + +from docutils.core import publish_cmdline, default_description + + +description = ('Generates (X)HTML from reStructuredText-format PEP files. ' + + default_description) + +publish_cmdline(reader_name='pep', writer_name='pep_html', + description=description) diff --git a/devenv/bin/sphinx-apidoc b/devenv/bin/sphinx-apidoc new file mode 100755 index 0000000..3d34cff --- /dev/null +++ b/devenv/bin/sphinx-apidoc @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from sphinx.ext.apidoc import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/sphinx-autogen b/devenv/bin/sphinx-autogen new file mode 100755 index 0000000..bc86d57 --- /dev/null +++ b/devenv/bin/sphinx-autogen @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from sphinx.ext.autosummary.generate import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/sphinx-build b/devenv/bin/sphinx-build new file mode 100755 index 0000000..96da195 --- /dev/null +++ b/devenv/bin/sphinx-build @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from sphinx.cmd.build import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/sphinx-quickstart b/devenv/bin/sphinx-quickstart new file mode 100755 index 0000000..a2dadd4 --- /dev/null +++ b/devenv/bin/sphinx-quickstart @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from sphinx.cmd.quickstart import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/stubgen b/devenv/bin/stubgen new file mode 100755 index 0000000..7a3763c --- /dev/null +++ b/devenv/bin/stubgen @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mypy.stubgen import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/stubtest b/devenv/bin/stubtest new file mode 100755 index 0000000..ab0fc9e --- /dev/null +++ b/devenv/bin/stubtest @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from mypy.stubtest import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/devenv/bin/symilar b/devenv/bin/symilar new file mode 100755 index 0000000..f933f73 --- /dev/null +++ b/devenv/bin/symilar @@ -0,0 +1,8 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pylint import run_symilar +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(run_symilar()) diff --git a/devenv/bin/undill b/devenv/bin/undill new file mode 100755 index 0000000..f6cfbb1 --- /dev/null +++ b/devenv/bin/undill @@ -0,0 +1,22 @@ +#!/home/zefirka/advanced-python-homework-2023/devenv/bin/python3 +# +# Author: Mike McKerns (mmckerns @caltech and @uqfoundation) +# Copyright (c) 2008-2016 California Institute of Technology. +# Copyright (c) 2016-2023 The Uncertainty Quantification Foundation. +# License: 3-clause BSD. The full license text is available at: +# - https://github.com/uqfoundation/dill/blob/master/LICENSE +""" +unpickle the contents of a pickled object file + +Examples:: + + $ undill hello.pkl + ['hello', 'world'] +""" + +if __name__ == '__main__': + import sys + import dill + for file in sys.argv[1:]: + print (dill.load(open(file,'rb'))) + diff --git a/devenv/lib64 b/devenv/lib64 new file mode 120000 index 0000000..7951405 --- /dev/null +++ b/devenv/lib64 @@ -0,0 +1 @@ +lib \ No newline at end of file diff --git a/devenv/pyvenv.cfg b/devenv/pyvenv.cfg new file mode 100644 index 0000000..0537ffc --- /dev/null +++ b/devenv/pyvenv.cfg @@ -0,0 +1,3 @@ +home = /usr/bin +include-system-site-packages = false +version = 3.10.12 diff --git a/doc/Makefile b/doc/Makefile new file mode 100644 index 0000000..d0c3cbf --- /dev/null +++ b/doc/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = source +BUILDDIR = build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/doc/make.bat b/doc/make.bat new file mode 100644 index 0000000..747ffb7 --- /dev/null +++ b/doc/make.bat @@ -0,0 +1,35 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.https://www.sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "" goto help + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O% + +:end +popd diff --git a/doc/source/conf.py b/doc/source/conf.py new file mode 100644 index 0000000..89e3d56 --- /dev/null +++ b/doc/source/conf.py @@ -0,0 +1,32 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +import os +import sys + +sys.path.insert(0, os.path.abspath(os.path.join("..", ".."))) + +project = 'SCADA - controls-py' +copyright = '2023, Anna' +author = 'Anna' + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = ['sphinx.ext.autodoc'] + +templates_path = ['_templates'] +exclude_patterns = [] + + + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = 'alabaster' +html_static_path = ['_static'] diff --git a/doc/source/controls.rst b/doc/source/controls.rst new file mode 100644 index 0000000..cabeb68 --- /dev/null +++ b/doc/source/controls.rst @@ -0,0 +1,10 @@ +controls package +================ + +Module contents +--------------- + +.. automodule:: controls + :members: + :undoc-members: + :show-inheritance: diff --git a/doc/source/index.rst b/doc/source/index.rst new file mode 100644 index 0000000..c94e53c --- /dev/null +++ b/doc/source/index.rst @@ -0,0 +1,20 @@ +.. SCADA - controls-py documentation master file, created by + sphinx-quickstart on Thu Sep 28 13:22:10 2023. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to SCADA - controls-py's documentation! +=============================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + ./controls.rst + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/doc/source/make.bat b/doc/source/make.bat new file mode 100644 index 0000000..e69de29 diff --git a/nano.2226.save b/nano.2226.save new file mode 100644 index 0000000..8b0fd57 --- /dev/null +++ b/nano.2226.save @@ -0,0 +1,14 @@ +[build-system] +requires = ["sip >=5, <6"] +build-backend = "sipbuild.api" + +[tool.sip.metadata] +name = "pyfoo" +version = "0.1" +license = "MIT" + +[tool.sip.bindings.pyfoo] +headers = ["foo.h"] +libraries = ["foo"] +include-dirs = ["foo"] +library-dirs = ["foo/bin"] diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..f9e221e --- /dev/null +++ b/setup.py @@ -0,0 +1,19 @@ +from setuptools import setup, find_packages + + +setup(name='control', + version='0.1', + license='MIT', + author='Zefirova Anna', + author_email='zefirova.am@phystech.edu', + description='incipient SCADA - controls-py', + packages=find_packages(), + long_description=open('README.md').read(), + #setup_requires=зависимости, + classifiers=[ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", + ], + python_requires='>=3.5', + zip_safe=False)