An open-source systems and controls toolbox for Python3

Overview

Travis-CI License Gitter Coveralls Documentation Status Download Counts

harold

A control systems package for Python>=3.6.

Introduction

This package is written with the ambition of providing a full-fledged control systems software that serves a control engineer/student/researcher with complete access to the source code with permissive rights (see LICENSE file). Moreover, via working with a proper high-level computer programming language many proprietary software obstacles are avoided and users can incorporate this package into their workflow in any way they see fit.

Quick Reference and Documentation

The documentation is online at ReadTheDocs. A brief tutorial about the basics can be found under the notebooks folder to see harold in action.

Roadmap

The items that are in the pipeline and what possibly lies ahead is enumerated in our roadmap.

Useful Links

  • There is already an almost-matured control toolbox which is led by Richard Murray et al. (click for the Github page) and it can perform already most of the essential tasks. Hence, if you want to have something that resembles the basics of matlab control toolbox, you should give it a try. However, it is somewhat limited to SISO tools and also relies on SLICOT library which can lead to installation hassle and/or licensing problems for nontrivial tasks.
  • You can also use the tools available in SciPy signal module for basics of LTI system manipulations. SciPy is a powerful all-purpose scientific package. This makes it extremely useful however admittedly every discipline has a limited presence hence the limited functionality. If you are looking for a quick LTI system manipulation and don't want to install yet another package, then it might be the tool for you.
  • Instead, if you are interested in robust control you probably would appreciate the Skogestad-Python project. They are replicating the code parts of the now-classic book completely in Python. Awesome!

Help Wanted!

If you are missing out a feature, or found a bug, get in contact. Such reports and PR submissions are more than welcome!

Contact

If you have questions/comments feel free to shoot one to [email protected] or join the Gitter chatroom.

Comments
  • Scipy riccati solvers are too naive

    Scipy riccati solvers are too naive

    It basically implements the textbook definition. Implement the Newton + line search for both care and dare (with proper function names if possible). Slyvester and Lyapunov solvers use LAPACK versions hence they are OK on paper.

    Reminder : For control purposes, speed is irrelevant! So being implemented in Fortran doesn't mean much. The residuals and conditioning of the variables decide whether certain synthesis algorithms work or not. This needs to be state-of-art without relying on anything off-the-shelf.

    enhancement help wanted missing 
    opened by ilayn 7
  • Getting exception when adding two discrete MISO transfer functions

    Getting exception when adding two discrete MISO transfer functions

    Hi again! :-)

    I think the following code should work, but I'm getting an exception:

    import harold
    print(harold.__version__)
    tf = (harold.Transfer([[[0.0], [1.0]]], [[[1.0], [1.0]]], 0.02)
        + harold.Transfer([[[1.0], [0.5]]], [[[1.0], [1.0]]], 0.02))
    print(tf.polynomials)
    

    Here is the output:

    1.0.2.dev0+90a785b
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+90a785b-py3.8.egg/harold/_classes.py in __add__(self, other)
        404                 try:
    --> 405                     return Transfer(self.to_array() + other.to_array(),
        406                                     dt=self._dt)
    
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+90a785b-py3.8.egg/harold/_classes.py in __init__(self, num, den, dt)
         64         (self._num, self._den,
    ---> 65          self._shape, self._isgain) = self.validate_arguments(num, den)
         66         self._p, self._m = self._shape
    
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+90a785b-py3.8.egg/harold/_classes.py in validate_arguments(num, den, verbose)
       1504             if returned_numden_list[0].size > returned_numden_list[1].size:
    -> 1505                 raise ValueError('Noncausal transfer functions are not '
       1506                                  'allowed.')
    
    ValueError: Noncausal transfer functions are not allowed.
    
    During handling of the above exception, another exception occurred:
    
    ValueError                                Traceback (most recent call last)
    <ipython-input-1-fe5c19b20276> in <module>
          1 import harold
          2 print(harold.__version__)
    ----> 3 tf = (harold.Transfer([[[0.0], [1.0]]], [[[1.0], [1.0]]], 0.02)
          4     + harold.Transfer([[[1.0], [0.5]]], [[[1.0], [1.0]]], 0.02))
          5 print(tf.polynomials)
    
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+90a785b-py3.8.egg/harold/_classes.py in __add__(self, other)
        406                                     dt=self._dt)
        407                 except ValueError:
    --> 408                     raise ValueError('Shapes are not compatible for '
        409                                      'addition. Model shapes are {0} and'
        410                                      ' {1}'.format(self._shape, other.shape))
    
    ValueError: Shapes are not compatible for addition. Model shapes are (1, 2) and (1, 2)
    
    bug 
    opened by twmacro 6
  • DOC: Update haroldpolyadd function

    DOC: Update haroldpolyadd function

    Updated the haroldpolyadd function. It now trims the zeros of the output instead the zeros of the input. Improved the docstring with a parameter and return list.

    If you like these changes I can change the haroldpolymult function as well.

    documentation 
    opened by whzup 6
  • bug in simulate_impulse_response: no

    bug in simulate_impulse_response: no "ts" if "t" is input

    Hi! This is a simple little bug. If you call simulate_impulse_response with an argument for the time vector, the internal variable "ts" never gets created. Then, this line fails:

    u[0] = 1./ts
    

    For fun, here is a complete example that mimics my real problem:

    import numpy as np
    import matplotlib.pyplot as plt
    import harold
    
    dt = 1.0 / 50.0
    
    # define 10 Hz filter with 0.7 damping:
    w = 2 * np.pi * 10.0
    num = w**2
    den = [1.0, 2*0.7*w, w**2]
    filt = harold.Transfer(num, den)
    ss = harold.transfer_to_state(filt)
    ssd = harold.discretize(ss, dt, 'foh')
    
    t = np.arange(0., 1., dt)
    y, t_ = harold.simulate_impulse_response(ssd, t)
    # y, t_ = harold.simulate_impulse_response(ssd)
    plt.plot(t_, y)
    
    bug 
    opened by twmacro 5
  • SISO Behavior when multiplied with a matrix

    SISO Behavior when multiplied with a matrix

    When a SISO Transfer() or State() multiplied with a p x m matrix, should it reject due to size mismatch or elementwise multiply with each element of the matrix P as if an overloaded Kronecker Product kron(P,G) ?

    bug help wanted question 
    opened by ilayn 5
  • bug when adding non-normalized transfer functions

    bug when adding non-normalized transfer functions

    Hi!

    Adding (110 s) / (85 s^2 + 20 s + 1) and 0.25 gives an incorrect result, but it works fine if the first transfer function is normalized. Here is a little example ... it shows that the numerator never gets divided by 85:

    import numpy as np
    import harold
    
    
    num = np.array([110.0, 0.0])
    den = np.array([85.0, 20.0, 1.0])
    
    h_a = harold.Transfer(num, den)
    h_b = harold.Transfer(num / 85.0, den / 85.0)
    
    h2 = harold.Transfer(0.25, 1.0)
    
    h_sum_a = h_a + h2
    h_sum_b = h_b + h2
    print(f"h_sum_a.num = {h_sum_a.num}")
    print(f"h_sum_a.den = {h_sum_a.den}")
    
    print()
    print(f"h_sum_b.num = {h_sum_b.num}")
    print(f"h_sum_b.den = {h_sum_b.den}")
    
    

    The output is:

    h_sum_a.num = [[2.50000000e-01 1.10058824e+02 2.94117647e-03]]
    h_sum_a.den = [[1.         0.23529412 0.01176471]]
    
    h_sum_b.num = [[0.25       1.35294118 0.00294118]]
    h_sum_b.den = [[1.         0.23529412 0.01176471]]
    
    bug prio:high 
    opened by twmacro 4
  • Error converting MIMO transfer function matrix to MIMO State Space realization

    Error converting MIMO transfer function matrix to MIMO State Space realization

    I am working with MIMO systems analysis. I tried to use harold library to convert a transfer function matrix to a state space realization and found out that there are some problems in this routine.

    I attached a jupyter notebook file that reproduces my experiment. I compared the results from harold with python control (and also Matlab, which yelds the same results from python control).

    I didn't get the time to read into your code, but due to this issue, the transmission zeros calculation for a MIMO transfer function matrix is getting wrong values as it seems to depend on the state space realization.

    Harold_test.pdf

    bug 
    opened by evertoncolling 4
  • This division by sampling time causing wrong dc gain (calculate from impulse response) in the case of discrete system with sampling time other than 1

    This division by sampling time causing wrong dc gain (calculate from impulse response) in the case of discrete system with sampling time other than 1

    Why this division by sampling time? It's causing a bug in the case of discrete system with sampling time other than 1. I am using impulse response of system for FFT convolve. This division is causing wrong DC gain. Currently I am multiplying sample time to the result of this function to correct DC gain. Is this division really required? https://github.com/ilayn/harold/blob/2bfa00fca4549313d47386991a27c84c8fc91637/harold/_time_domain.py#L252

    opened by jamestjsp 3
  • Getting exception when creating discrete MISO transfer function

    Getting exception when creating discrete MISO transfer function

    Hi!

    I'm getting an error trying to create a discrete MISO transfer function. It easiest to show via code. This works:

    import harold
    print(harold.__version__)
    print(harold.Transfer([[[1.0, 0.0]]], [[[1.0, 0.0]]], 0.02).polynomials)
    

    Output:

    1.0.2.dev0+517e57f
    (array([[1., 0.]]), array([[1., 0.]]))
    

    However, this does not work:

    print(harold.Transfer([[[1.0], [1.0, 0.0]]], [[[1.0], [1.0, 0.0]]], 0.02).polynomials)
    

    Output:

    ---------------------------------------------------------------------------
    IndexError                                Traceback (most recent call last)
    <ipython-input-4-e546dfb4f959> in <module>
    ----> 1 print(harold.Transfer([[[1.0], [1.0, 0.0]]], [[[1.0], [1.0, 0.0]]], 0.02).polynomials)
    
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+517e57f-py3.8.egg/harold/_classes.py in __init__(self, num, den, dt)
         70         self._isdiscrete = False if dt is None else True
         71
    ---> 72         self._recalc()
         73
         74     @property
    
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+517e57f-py3.8.egg/harold/_classes.py in _recalc(self)
        301             else:
        302                 # Create a dummy statespace and check the zeros there
    --> 303                 zzz = transfer_to_state((self._num, self._den),
        304                                         output='matrices')
        305                 self.zeros = transmission_zeros(*zzz)
    
    ~/anaconda3/envs/py38/lib/python3.8/site-packages/harold-1.0.2.dev0+517e57f-py3.8.egg/harold/_classes.py in transfer_to_state(G, output)
       2974             A = haroldcompanion(den[0][0])
       2975             B = np.zeros((A.shape[0], 1), dtype=float)
    -> 2976             B[-1, 0] = 1.
       2977             t1, t2 = A, B
       2978
    
    IndexError: index -1 is out of bounds for axis 0 with size 0
    
    bug 
    opened by twmacro 3
  • numerical issue creating transfer function

    numerical issue creating transfer function

    Hi!

    I'm getting an error trying to create a transfer function. Below is a little example that shows the error on my computer. I'm thinking that somehow a numeric leading "zero" shows up (it was -8.3948810935738183e-17 for me) and is not trimmed off by np.trim_zeros. That creates sizing trouble when assembling the state-space matrices.

    import harold
    
    
    # set up a 2-input, 1-output transfer function
    
    # denominator is the same for both transfer functions:
    den = [[[[84.64, 18.4, 1.0]], [[1.0, 7.2, 144.0]]]]
    
    # - same as below except last 4 digits chopped off for each number
    num = [
        [
            [[61.7973249220, 36.2498843026, 0.730119623369]],
            [[0.037784067405, 0.997499379512, 21.76362282573]],
        ]
    ]
    
    # this one works:
    tf1 = harold.Transfer(num, den)
    print(tf1)
    
    # keep those last 4 digits and it breaks:
    num = [
        [
            [[61.79732492202783, 36.24988430260625, 0.7301196233698941]],
            [[0.0377840674057878, 0.9974993795127982, 21.763622825733773]],
        ]
    ]
    
    tf2 = harold.Transfer(num, den)
    print(tf2)
    

    And here is the output:

    Continuous-Time Transfer function
     2 inputs and 1 output
    
      Poles(real)    Poles(imag)  Zeros(real)    Zeros(imag)
    -------------  -------------  -------------  -------------
        -0.108696    1.16214e-07
        -0.108696   -1.16214e-07
        -3.6        11.4473
        -3.6       -11.4473
    
    
    ---------------------------------------------------------------------------
    ValueError                                Traceback (most recent call last)
    ~/code/harold/bug.py in <module>
         27 ]
         28
    ---> 29 tf2 = harold.Transfer(num, den)
         30 print(tf2)
    
    ~/code/harold/harold/_classes.py in __init__(self, num, den, dt)
         70         self._isdiscrete = False if dt is None else True
         71
    ---> 72         self._recalc()
         73
         74     @property
    
    ~/code/harold/harold/_classes.py in _recalc(self)
        302                 # Create a dummy statespace and check the zeros there
        303                 zzz = transfer_to_state((self._num, self._den),
    --> 304                                         output='matrices')
        305                 self.zeros = transmission_zeros(*zzz)
        306                 self.poles = eigvals(zzz[0])
    
    ~/code/harold/harold/_classes.py in transfer_to_state(G, output)
       3036
       3037                 for row in range(p):
    -> 3038                     C[row, k:k+num[row][col].size] = num[row][col][0, ::-1]
       3039                 k += coldegrees[col]
       3040
    
    ValueError: could not broadcast input array from shape (5) into shape (4)
    
    bug 
    opened by twmacro 3
  • Cannot import name '_asarray_validated' from 'scipy.linalg.decomp'

    Cannot import name '_asarray_validated' from 'scipy.linalg.decomp'

    Including harold package leads to the following error when running a script:

      File "C:\Users\michele.franzan\AppData\Local\Programs\Python\Python310\lib\site-packages\harold\__init__.py", line 30, in <module>
        from ._classes import *
      File "C:\Users\michele.franzan\AppData\Local\Programs\Python\Python310\lib\site-packages\harold\_classes.py", line 6, in <module>
        from scipy.linalg.decomp import _asarray_validated
    ImportError: cannot import name '_asarray_validated' from 'scipy.linalg.decomp' (C:\Users\michele.franzan\AppData\Local\Programs\Python\Python310\lib\site-packages\scipy\linalg\decomp.py)
    

    I've found out that the _asarray_validated() function is included in scipy._lib._util instead of scipy.linalg.decomp.

    opened by michele-franzan 2
  • ENH: Add rootlocus

    ENH: Add rootlocus

    Though I strongly think that root locus belongs to the previous century, people keep pushing it to students. It is literally 5 lines of jupyter notebook slider widget but control curriculum is still playing in the 80s mud. Hence no point in resisting as everybody asks for it.

    enhancement feature request 
    opened by ilayn 0
  • Include a machinary to create custom __repr__() formats

    Include a machinary to create custom __repr__() formats

    Currently, the State and Transfer models print out the pre-designed strings. But different users have different needs, for example the academically oriented users prefer more about the stability properties (transmission zeros etc.) and application oriented people more interested in system properties (damping, bandwidth alike)

    There should be an entry point for sticking in a custom argument for repr

    help wanted feature request 
    opened by ilayn 0
  • MIMO Transfer data structure

    MIMO Transfer data structure

    Currently MIMO transfer num den data is kept in list of lists. This is good for quick access with different lengths of entries. For example, if some element has only 1 and the other element has s^3 + 5s^2 - 4s -7 and they can be kept as [[1], [1, 5, -4, -7]. But for some operations walking over list of lists is too slow and inconvenient. For example adding a 3D zero padded numpy array is much easier to multiply with a scalar etc.

    A MIMO transfer object can hold both the list of lists and also the 3D array version. Hence add NumPy arrays.

    feature request 
    opened by ilayn 0
Releases(v1.0.3)
  • v1.0.3(Dec 4, 2022)

  • v1.0.2(Apr 27, 2022)

    This is a long-standing update release to many functions and involves many fixes. Please feel free to give critical feedback as I have been neglecting this library for a while and I recently discovered many design issues. Thus, I'm quite open for any criticism for improvements.

    The versions 1.0.x will probably continue with minor fixes and features. However, there will be some breaking changes in 1.1.x series as this is getting very difficult to manage with the current file and function structure.

    What's Changed

    • FIX: Rework minimal_realization and staircase by @ilayn in https://github.com/ilayn/harold/pull/19
    • FIX: add missing all ddunder by @ilayn in https://github.com/ilayn/harold/pull/20
    • FIX: discrete plot holds the next value instead. by @ilayn in https://github.com/ilayn/harold/pull/21
    • MAINT: Turn off Travis emails by @ilayn in https://github.com/ilayn/harold/pull/22
    • ENH: Add random_state_model by @ilayn in https://github.com/ilayn/harold/pull/23
    • Add more tests to improve code coverage by @ilayn in https://github.com/ilayn/harold/pull/24
    • FIX: dt keyword now works properly on random_state_model by @ilayn in https://github.com/ilayn/harold/pull/25
    • FIX: transfer_to_state all static columns by @ilayn in https://github.com/ilayn/harold/pull/27
    • MAINT: DOC: Restructure Documentation by @ilayn in https://github.com/ilayn/harold/pull/26
    • ENH: Added ackermann() by @ilayn in https://github.com/ilayn/harold/pull/28
    • ENH: Controllability indices by @ilayn in https://github.com/ilayn/harold/pull/32
    • DOC: MAINT: Sphinx 1.7.8 fails to import package by @ilayn in https://github.com/ilayn/harold/pull/33
    • DOC: Add contributing.md by @ilayn in https://github.com/ilayn/harold/pull/35
    • DOC: Use intersphinx for SciPy, NumPy funcs by @ilayn in https://github.com/ilayn/harold/pull/37
    • DOC: Update haroldpolyadd function by @whzup in https://github.com/ilayn/harold/pull/36
    • DOC: Add example for haroldpolydiv by @whzup in https://github.com/ilayn/harold/pull/38
    • MAINT: Use _assertNdSquareness by @ilayn in https://github.com/ilayn/harold/pull/40
    • FIX: step_resp : Added missing integrator counts by @ilayn in https://github.com/ilayn/harold/pull/39
    • ENH: System inversion and 1/G type operations by @ilayn in https://github.com/ilayn/harold/pull/41
    • BUG: transfer_to_state common den case by @ilayn in https://github.com/ilayn/harold/pull/43
    • MAINT: Make readme a bit less personal by @ilayn in https://github.com/ilayn/harold/pull/44
    • BUG: Sampling time is not computed if a custom time array is provided by @ilayn in https://github.com/ilayn/harold/pull/46
    • FIX: Transfer add() method was wrong for nonmonic denominator entries by @ilayn in https://github.com/ilayn/harold/pull/48
    • BUG: System norm was evaluated on the wrong axis by @ilayn in https://github.com/ilayn/harold/pull/49
    • Add dummy function for 'place_poles' by @ilayn in https://github.com/ilayn/harold/pull/51
    • FIX: transfer_to_state tripping over numerical noise by @ilayn in https://github.com/ilayn/harold/pull/52
    • BUG: auto frequency grid selection is improved by @ilayn in https://github.com/ilayn/harold/pull/54
    • Numpy funcs rename by @ilayn in https://github.com/ilayn/harold/pull/55
    • ENH: Freq plots accept multiple models and styles by @ilayn in https://github.com/ilayn/harold/pull/56
    • MAINT: Minor cleanup for Py3.8 warnings by @ilayn in https://github.com/ilayn/harold/pull/59
    • raise ValueError instead of IndexError by @namannimmo10 in https://github.com/ilayn/harold/pull/60
    • Interchange outputs with inputs in docstring by @namannimmo10 in https://github.com/ilayn/harold/pull/61
    • BUG:Transfer: Exact cancellations leading initialize error by @ilayn in https://github.com/ilayn/harold/pull/66
    • ENH: Supply a list of systems for time domain plotting by @ilayn in https://github.com/ilayn/harold/pull/67
    • BUG: fix transfer_to_state static gain case by @ilayn in https://github.com/ilayn/harold/pull/70
    • MAINT: Update _classes.py for SciPy namespaces by @ilayn in https://github.com/ilayn/harold/pull/75
    • FIX:State: SIMO MISO algebra fixes by @ilayn in https://github.com/ilayn/harold/pull/78
    • TST: Fix outdated SciPy imports by @ilayn in https://github.com/ilayn/harold/pull/79
    • CI: Set up GitHub Actions by @ilayn in https://github.com/ilayn/harold/pull/80
    • TST: Update and fix post-poetry failures by @ilayn in https://github.com/ilayn/harold/pull/82
    • FIX: Transfer static add, radd for static gains by @ilayn in https://github.com/ilayn/harold/pull/83
    • MAINT: Handle cyclic imports by @ilayn in https://github.com/ilayn/harold/pull/85
    • MAINT: Remove unused badges from ReadMe by @ilayn in https://github.com/ilayn/harold/pull/86
    • MAINT: Add dcgain method to State and Transfer by @ilayn in https://github.com/ilayn/harold/pull/87
    • MAINT: pyproject and readme update by @ilayn in https://github.com/ilayn/harold/pull/88

    New Contributors

    • @whzup made their first contribution in https://github.com/ilayn/harold/pull/36
    • @namannimmo10 made their first contribution in https://github.com/ilayn/harold/pull/60

    Full Changelog: https://github.com/ilayn/harold/compare/v1.0.0...v1.0.2

    Source code(tar.gz)
    Source code(zip)
    harold-1.0.2-py3-none-any.whl(117.85 KB)
    harold-1.0.2.tar.gz(101.75 KB)
  • v1.0.1(Jun 18, 2018)

    This is a maintenance release for 1.0.0 with various fixes and small enhancements, namely random model creation and ackermann pole placement method.

    The highlight of this release is the full documentation of the functions with a proper readthedocs theme. Though the individual function documentation is still lacking proper maintenance the structure of the documentation is functional.


    • #19 FIX: Rework minimal_realization and staircase
    • #20 FIX: add missing all ddunder
    • #21 FIX: discrete plot holds the next value instead.
    • #22 MAINT: Turn off Travis emails
    • #23 ENH: Add random_state_model
    • #24 Add more tests to improve code coverage
    • #25 FIX: dt keyword now works properly on random_state_model
    • #26 MAINT: DOC: Restructure Documentation
    • #27 FIX: transfer_to_state all static columns
    • #28 ENH: Added ackermann()
    Source code(tar.gz)
    Source code(zip)
    harold-1.0.1-py3-none-any.whl(88.32 KB)
    harold-1.0.1.tar.gz(76.75 KB)
    harold-1.0.1.zip(96.42 KB)
  • v1.0.0(May 23, 2018)

    This is the initial release of harold and what has been accumulated over its inception. Most of the basic functionalities of a control systems toolbox is in place and relatively well-functioning.

    An introductory notebook and the documentation is in place (though still needs a major rework in terms of tutorial value).

    User feedback is very welcome in order to understand how this package functions out "in the wild".

    Source code(tar.gz)
    Source code(zip)
    harold-1.0.0-py3-none-any.whl(89.60 KB)
    harold-1.0.0.zip(96.30 KB)
Owner
Ilhan Polat
Ilhan Polat
Mixtaper - Web app to make mixtapes

Mixtaper A web app which allows you to input songs in the form of youtube links

suryansh 1 Feb 14, 2022
A Notifier Program that Notifies you to relax your eyes Every 15 Minutes👀

Every 15 Minutes is an application that is used to Notify you to Relax your eyes Every 15 Minutes, This is fully made with Python and also with the us

FSP Gang s' Admin 1 Nov 03, 2021
Project aims to map out common user behavior on the computer

User-Behavior-Mapping-Tool Project aims to map out common user behavior on the computer. Most of the code is based on the research by kacos2000 found

trustedsec 136 Dec 23, 2022
A simple but complete exercise to learning Python

ResourceReservationProject This is a simple but complete exercise to learning Python. Task and flow chart We are going to do a new fork of the existin

2 Nov 14, 2022
Hashcrack - A non-object oriented open source, Software for Windows/Linux made in Python 3

Multi Force This project is a non-object oriented open source, Software for Wind

Radiationbolt 3 Jan 02, 2023
1st Online Python Editor With Live Syntax Checking and Execution

PythonBuddy 🖊️ 🐍 Online Python 3 Programming with Live Pylint Syntax Checking! Usage Fetch from repo: git clone https://github.com/ethanchewy/Python

Ethan Chiu 255 Dec 23, 2022
A browser login credentials thief for windows and Linux

Thief 🦹🏻 A browser login credentials thief for windows and Linux Python script to decrypt login credentials from browsers in windows or linux Decryp

Ash 1 Dec 13, 2021
Bazel rules to install Python dependencies with Poetry

rules_python_poetry Bazel rules to install Python dependencies from a Poetry project. Works with native Python rules for Bazel. Getting started Add th

Martin Liu 7 Dec 15, 2021
Backend Interview Challenge

Inspect HOA backend challenge This is a simple flask repository with some endpoints and requires a few more endpoints. It follows a simple MVP (model-

1 Jan 20, 2022
Subnet calculator script using python

subnetCalculator Subnet calculator script using python3 Interactive Version Define the subnet variable interactively Use: subnetDict = subnetCalculato

1 Feb 15, 2022
Python Function to manage users via SCIM

Python Function to manage users via SCIM This script helps you to manage your v2 users. You can add and delete users or groups, add users to groups an

4 Oct 11, 2022
A very small (15 lines of code) and beautiful fetch script (exclusively for Arch Linux).

minifetch A very small (15 lines of code) and beautiful fetch script (exclusively for Arch Linux). There are many fetch scripts out there but I wanted

16 Jul 11, 2022
CPython extension implementing Shared Transactional Memory with native-looking interface

CPython extension implementing Shared Transactional Memory with native-looking interface

21 Jul 22, 2022
PORTSCANNING-IN-PYTHON - A python threaded portscanner to scan websites and ipaddresses

PORTSCANNING-IN-PYTHON This is a python threaded portscanner to scan websites an

1 Feb 16, 2022
Repository, with small useful and functional applications

Repositorio,com pequenos aplicativos uteis e funcionais A ideia e ir deselvolvendo pequenos aplicativos funcionais e adicionar a este repositorio List

GabrielDuke 6 Dec 06, 2021
Find functions without canary check (or similar)

Ghidra Check Protector Which non-trivial functions don't reference the stack canary checker (or other, user-defined function)? Place your cursor to th

buherator 3 Jan 17, 2022
Convert .1pux to .csv

1PasswordConverter Convert .1pux to .csv 1Password uses this new export format .1pux, I assume stands for 1 Password User eXport. As of right now, 1Pa

Shayne Hartford 7 Dec 16, 2022
Esercizi di Python svolti per il biennio di Tecnologie Informatiche.

Esercizi di Python Un piccolo aiuto per Sofia che nel 2° quadrimestre inizierà Python :) Questo repository (termine tecnico di Git) puoi trovare tutti

Leonardo Essam Dei Rossi 2 Nov 07, 2022
The Open edX platform, the software that powers edX!

This is the core repository of the Open edX software. It includes the LMS (student-facing, delivering courseware), and Studio (course authoring) compo

edX 6.2k Jan 01, 2023
A modern python module including many useful features that make discord bot programming extremely easy.

discord-super-utils Documentation Secondary Documentation A modern python module including many useful features that make discord bot programming extr

106 Dec 19, 2022