Mnemosyne: efficient learning with powerful digital flash-cards.

Overview

Mnemosyne: Optimized Flashcards and Research Project

Mnemosyne is:

  • a free, open-source, spaced-repetition flashcard program that helps you learn as efficiently as possible.
  • a research project into the nature of long-term memory. If you like, you can help out and upload anomynous data about your learning process (this feature is off by default).

Important features include:

  • Bi-directional syncing between several devices
  • Clients for Windows/Mac/Linux and Android
  • Flashcards with rich content (images, video, audio)
  • Support for Google text-to-speech and Google translate
  • Powerful card types
  • Flexible card browser and card selection
  • Visualization to illustrate your learning process
  • Extensive plugin architecture and external scripting
  • Different learning schedulers
  • Webserver for review through browser (does not implement any security features so far)
  • Cramming scheduler to review cards without affecting the regular scheduer
  • Core library that allows you to easily create your own front-end.

You can find a more detailed explanation of the features on the webpage, as well as the general documentation.

If you just want to download the latest Mnemosyne release as a regular user, please see the Download section. If you are interested in running and changing the latest code, please read on.

Installation of the development version and hacking

We use the git version control system and Github to coordinate the development. Please use a search engine to find out how to install git on your operating system. If you are new to git and github, there are many tutorials available on the web. For example, this interactive tutorial. See also section working locally with the code and sharing your changes for some info about git and Github.

About the code base

To get an overview of how all the different bits of the library fit together, see the documentation in the code at mnemosyne/libmnemosyne/docs/build/html/index.html. In order to keep the code looking uniform, please following the standard Python style guides PEP8 and PEP257.

Running the development code

You can find instructions for Windows here. The following instructions are valid for Linux and Mac (if you use homebrew or some other package manager).

Runtime requirements

To start working on Mnemosyne, you need at least the following software.

  • Python 3.5 or later
  • PyQt 5.6 or later, including QtWebEngineWidgets.
  • Matplotlib
  • Easyinstall
  • cheroot 5 or later
  • Webob 1.4 or later
  • Pillow
  • gTTS for Google text-to-speech
  • googletrans for Google translate support
  • For Latex support: the latex and dvipng commands must be available (e.g., TeXLive on Linux, MacTeX on Mac, and MikTeX on Windows). On Arch based distributions, you'll need texlive-core package too.
  • For building the docs: sphinx (If you get sphinx-related errors, try installing sphinx as root)
  • For running the tests: nose

You can either run a development version of Mnemosyne by using your system-wide Python installation, or by using a virtual environment with virtualenv. If your distribution provides and packages all necessary libraries in a recent enough version, using the system-wide Python install is probably easier and the recommended way.

Using the system-wide python installation

First, install all dependencies with your distribution's package manager. Then, run make build-all-deps, followed by make from the top-level mnemosyne directory. This will generate all the needed auxiliary files and start Mnemosyne with a separate datadir under dot_mnemosyne2. If you want to use mnemosyne interactively from within a python shell, run python from the top-level mnemosyne directory. You can check if the correct local version was imported by running import mnemosyne; print(mnemosyne.__file__).

Using a local python installation

If your distribution does not provide all required libraries, or if the libraries are too old, create a virtual environment in the top-level directory (virtualenv venv), activate it (source venv/bin/activate) and install all the required dependencies with pip install. Then, follow the steps of the previous paragraph.

Running the test suite

You can always run the test suite:

make test

or:

python3 -m nose --exe tests

Single tests can be run like this:

python3 -m nose --exe tests/<file_name>.py:<class_name>:<method_name>

Nose captures stdout by default. Use the -s switch if you want to print output during the test run.

You can increase the verbosity level with the -v switch.

Add --pdb to the command line to automatically drop into the debugger on errors and failures. If you want to drop into the debugger before a failure, edit the test and add the following code at the exact spot where you want the debugger to be started:

from nose.tools import set_trace; set_trace()

System-wide installation from source

For testing the development version it is not necessary to do a system-wide installation. If you want to do so anyway, here are the instructions.

Linux

Follow the installation instructions from above (install the dependencies, get the source code - either by cloning it from github, or by downloading and extracting the .tar.gz archive). Then, run the following command from within the top-level directory of the repository (which is also the location of this README.md file):

sudo python setup.py install

Depending on your setup, you might need to replace python with python3. To test the installation, change to any other directory and run mnemosyne. For example:

cd ~
mnemosyne

If you run into the issue of non-latin characters not displaying on statistic plots, install ttf-mscorefonts-installer and regenerate the font cache of matplotlib.

Mac

  • Download and install Homebrew (see http://brew.sh)
  • Open the Terminal.
  • Make sure you are using the latest version of Homebrew:
brew update
  • Install dependencies for Mnemosyne.
brew install python qt mplayer
brew cask install xquartz # needed for mplayer dylibs
  • For Mnemosyne 2.7.3, we used Python 3.7.9 and Qt 5.15. To confirm you're using the correct versions:
python --version
pip --version
  • If the versions are not correct, andy ou need to edit a Homebrew dependency, you can use these commands:
brew uninstall <package-name>
brew edit <package-name>
# Example: replace the file with the contents of https://raw.githubusercontent.com/Homebrew/homebrew-core/e76ed3606c8008d2b8d9636a7e4e6f62cfeb6120/Formula/python3.rb and save it
brew install <package-name>
brew pin <package-name>
  • Install the python dependencies for Mnemosyne, using a python virtual environment to isolate python dependencies.
  • Note for Mnemosyne 2.7.3, we used PyQt5 5.15 and PyInstaller 4.0
pip install virtualenv
virtualenv venv
source venv/bin/activate
pip install webob tornado matplotlib numpy sip pillow cheroot googletrans gtts pyopengl

# install development version of pyinstaller to ensure we get https://github.com/pyinstaller/pyinstaller/issues/5004
pip install -U https://github.com/pyinstaller/pyinstaller/archive/develop.zip

# run this command and inspect the output to confirm you're using the correct versions
pip install pyqt5 pyqtwebengine
  • Build it (while still using the python virtual environment):
make clean
make macos
  • Test the new application (back up your data directory first!):
open dist/Mnemosyne.app
  • Optionally drag and drop this new app to /Applications.

Git and Github info

Working locally with the code

If you want to hack on Mnemosyne and propose your changes for merging later ('pull request'), first create an account on, or log into, Github. Then, fork the project on Github. You now have your own copy of the Mnemosyne repository on Github.

To work with the code, you need to clone your personal Mnemosyne fork on Github fork to your local machine. It's best to setup ssh for Github, but you don't have to. Change to your working directory on the terminal and then clone your repository of Mnemosyne (in this example without ssh):

git clone https://github.com/<your-username>/mnemosyne.git

Let's also make it easy to track the official Mnemosyne repository:

git remote add upstream https://github.com/mnemosyne-proj/mnemosyne.git

It is best to create your own branches for your work:

git checkout -b <branch name>

Whenever you want, you can commit your changes:

git status
git add <files to add>
git commit -v

Sharing your changes

At some point you may want to share your changes with everyone. Before you do so, you should check make sure that you didn't introduce new test failures. Then, you should check if changes were made to the original Mnemosyne repository on Github. Your private fork on Github is not automatically updated with these changes. You can get the most recent changes like this:

git fetch upstream
git checkout master
git merge upstream/master

If there are new changes, your repository now looks like this (each number symbolises a commit):

your local master branch:  ---1-2-3-4'-5'-6'-7'-8' (new changes from upstream)
                                  |
your local feature branch:        |-4-5-6 (your changes)

Before you push your branch, you should rebase it on master. Rebasing takes all the changes in your branch (in the figure: 4-5-6) and tries to apply them on top of the master branch, so that we end up with a linear history:

your local master branch:  ---1-2-3-4'-5'-6'-7'-8' (new changes from upstream)
                                                |
your local feature branch:                      |-4-5-6 (your changes)

Rebase like this:

git checkout <branch name>
git rebase master

Follow the instructions (git status gives additional information). Once you've successfully rebased your branch, push it to your Github account (we use --force, because we want to overwrite the existing branch on our private Github account):

git push origin --force <branch name>

To create a pull request for your changes, go to the Mnemosyne project page on Github and click on the pull request tab. Click on 'New pull request' and follow the instructions.

Finally, some more background on the whole workflow can be found here.

Comments
  • Web client - sound is not played

    Web client - sound is not played

    Hello :-)

    When I use the web client and click the play button, I hear no sound. The web server runs on Windows 11 and the client on an Android smartphone. What could be the problem? Regards J.

    opened by jooseef 21
  • update the ubuntu package

    update the ubuntu package

    https://launchpad.net/ubuntu/artful/+source/mnemosyne

    ubuntu currently provides version 2.4. There are some important additions in 2.5 and 2.6 for high-resolution screens, so it would be great if 2.6 were packaged instead.

    Thanks :)

    opened by iambumblehead 16
  • Mnemosyne just thrashed my drives

    Mnemosyne just thrashed my drives

    Description

    ~3 days ago I wanted to give mnemosyne a try, so I installed the package from the Arch Linux AUR. I changed one or two settings, but then I had to leave, so I left mnemosyne open without having created any cards.

    Today, I noticed that my PC was responding slowly, so I decided to investigate. According to iotop, mnemosyne was still open and was writing to my NVMe (root) drive at ~300 MB/s. I immediately killed the process. Unfortunately, I didn't think to take a screenshot of iotop at the time, or run strace.

    After doing some investigation (see Debug Info, below), it turned out that since the last reboot, ~49.73 TB had been written to my NVMe drive and ~550 GB had been written to one of my HDD drives. Since my PC has been up for ~14 days, I cannot attribute all of this to mnemosyne (I can attribute at least ~150 GB of the data written to the HDD to other programs). However, it still appears that mnemosyne wrote tens of terabytes to my near-unused NVMe drive, using up ~1/4 of its rated write endurance in the process. For reference, prior to this, I had written <5 TB total to the drive over the past year.

    Attempting to open mnemosyne now gives the following error:

    An unexpected error has occurred.
    Please forward the following info to the developers:
    
    Traceback (innermost last):
      File "/usr/bin/mnemosyne", line 262, in <module>
        debug_file=options.debug_file)
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/__init__.py", line 193, in initialise                                               
        self.activate_components()
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/__init__.py", line 282, in activate_components                                      
        self.component_manager.current(component).activate()
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/logger.py", line 23, in activate                                                    
        self.archive_old_log()
      File "/usr/lib/python3.7/site-packages/mnemosyne/libmnemosyne/logger.py", line 192, in archive_old_log                                            
        f.write(l.encode("utf-8"))
      File "/usr/lib/python3.7/bz2.py", line 241, in write
        compressed = self._compressor.compress(data)
     KeyboardInterrupt
    

    I've decided to open an issue to attempt to resolve this so no one else experiences this. If any further debug information is required, let me know and I will provide it at the next opportunity. Quite frankly, I'm furious right now and not in the mood to debug this further at the current moment.

    Debug Info

    • uname -a
    Linux sputnik 4.18.16-arch1-1-ARCH #1 SMP PREEMPT Sat Oct 20 22:06:45 UTC 2018 x86_64 GNU/Linux
    
    • pacman -Q | grep mnemosyne
    mnemosyne 2.6.1-1
    
    • uptime
     02:08:39 up 14 days, 27 min, 16 users,  load average: 1.73, 2.11, 2.37
    
    • df -T
    Filesystem                Type     1K-blocks      Used Available Use% Mounted on
    dev                       devtmpfs   5804948         0   5804948   0% /dev
    run                       tmpfs     16336184      1012  16335172   1% /run
    /dev/mapper/vgroup-lvroot ext4     234147832  38469808 183714224  18% /
    tmpfs                     tmpfs     16336184    262628  16073556   2% /dev/shm
    tmpfs                     tmpfs     16336184         0  16336184   0% /sys/fs/cgroup
    tmpfs                     tmpfs     16336184    407456  15928728   3% /tmp
    /dev/nvme0n1p1            vfat       1046512     65692    980820   7% /boot
    tank01                    zfs       25908352         0  25908352   0% /mnt/tank01
    tank01/vm                 zfs       25908452        96  25908356   1% /mnt/tank01/vm
    tank01/vm/windows         zfs       74854680  48946324  25908356  66% /mnt/tank01/vm/windows
    tank02                    zfs      603361536 112892672 490468864  19% /mnt/tank02
    tank02/tmp                zfs      665136128 174667776 490468352  27% /mnt/tank02/tmp
    tmpfs                     tmpfs      3267236        32   3267204   1% /run/user/1000
    
    • awk '/nv/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
    nvme0n1 4.97347e+07
    nvme0n1p1       56.9048
    nvme0n1p2       4.97347e+07
    
    • awk '/sd/ {print $3"\t"$10 / 2 / 1024}' /proc/diskstats
    sda     550965
    sda1    550965
    sdb     1659.93
    sdb1    1659.93
    
    • sudo smartctl -A /dev/nvme0n1
    ...
    === START OF SMART DATA SECTION ===
    SMART/Health Information (NVMe Log 0x02, NSID 0x1)
    Critical Warning:                   0x00
    Temperature:                        38 Celsius
    Available Spare:                    100%
    Available Spare Threshold:          10%
    Percentage Used:                    18%
    Data Units Read:                    3,204,202 [1.64 TB]
    Data Units Written:                 107,146,899 [54.8 TB]
    Host Read Commands:                 47,591,909
    Host Write Commands:                176,159,535
    Controller Busy Time:               2,202
    Power Cycles:                       450
    Power On Hours:                     738
    Unsafe Shutdowns:                   32
    Media and Data Integrity Errors:    0
    Error Information Log Entries:      26
    Warning  Comp. Temperature Time:    0
    Critical Comp. Temperature Time:    0
    Temperature Sensor 1:               38 Celsius
    Temperature Sensor 2:               44 Celsius
    
    opened by indiv0 12
  • Segfault in Debian

    Segfault in Debian "stretch"

    Hello, I have just installed Debian "Stretch" and I cannot run mnemosyne.

    When I remove .local/share/mnemosyne and .config/mnemosyne

    $ mnemosyne
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    libpng warning: iCCP: known incorrect sRGB profile
    QIODevice::write (QProcess): device not open
    Erreur de segmentation
    

    If I run it again I get :

    1. A dialog box with message "Unable to load file, query failed"
    2. I close the dialog and another one is raised with "If you are using a USB key, refer to the instructions on the website so as not to be affected by drive letter changes."
    3. Then it asks me to select a db file. I select the one it has just created and that brings me back to step 1

    Can you suggest a workaround or something to try?

    thanks Christophe - a longtime Mnemosyne user

    opened by cmealares 12
  • Remember how many cards we've learned today even after re-opening the app

    Remember how many cards we've learned today even after re-opening the app

    Rationale

    When we close the Mnemosyne application and re-open it, it won't remember the number of the already memorized cards. In other words, it won't warn you if you've already learned 15 or more words.

    Implementation

    This PR aims to fix this issue and re-construct the self._fact_ids_memorised from the logs which are not that hard.

    We can fetch all the newly learned cards (same query as in the statistics) and all the forgotten but learned cards today. Combining the two, we can get the number of learned cards today.

    New features

    • The already memorized cards are re-constructed from the logs
    • It only warns once per day
    • Fixed long-time flaky python3.7 test

    Any comments are welcome.

    opened by woohgit 11
  • Mnemosyne 2.5: ImportError: cannot import name 'QtWebEngineWidgets'

    Mnemosyne 2.5: ImportError: cannot import name 'QtWebEngineWidgets'

    Hallo, when entering mnemosyne I get the following error message: ---------message---------------- An unexpected error has occurred. Please forward the following info to the developers:

    Traceback (innermost last): File "/usr/local/bin/mnemosyne", line 4, in import('pkg_resources').run_script('Mnemosyne==2.5', 'mnemosyne') File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 748, in run_script self.require(requires)[0].run_script(script_name, ns) File "/usr/lib/python3/dist-packages/pkg_resources/init.py", line 1517, in run_script exec(code, namespace, namespace) File "/usr/local/lib/python3.6/dist-packages/Mnemosyne-2.5-py3.6.egg/EGG-INFO/scripts/mnemosyne", line 147, in from PyQt5 import QtWebEngineWidgets # Needs to happen first for some reason. ImportError: cannot import name 'QtWebEngineWidgets' ----------message-------------

    My system is Linux xxxx 4.13.0-1-amd64 #1 SMP Debian 4.13.4-2 (2017-10-15) x86_64 GNU/Linux

    How can I solve the problem?

    Thank you very much.

    opened by grberta 11
  • Migration to Github (except translations)

    Migration to Github (except translations)

    Relevant ML threads: recent, last year Before migration:

    • [x] Test integration with launchpad's translation service
      • Problem: qastaging.launchpad.net and staging.launchpad.net don't import the branch properly. Which is not surprising, because they don't really work to begin with. But the import works fine here, so I don't think it will be a problem. Marking as solved.
    • [x] Run tests on Windows automatically with Appveyor
      • [x] Initial setup
      • [x] Fix for latex on windows: install miktex.portable with chocolatey and cache it
      • [x] Fix test hang. (Reason: running dvipng resulted in the miktex installer being triggered, because zhmetrics wasn't installed.)
      • [x] Optional: find out how to install zhmetrics from local file. Can be done, but package is only 35kB bit, so not worth it.
      • [x] Find out reason for excessive test failures
    • [x] Create a top-level README.md file
    • [x] Prepare website udpate, but don't update the website yet (see website_update.md):
      • [x] Bug reporting on Github
      • [x] Hacking: Github + git workflow
      • [x] Translation on launchpad

    Steps immediately before conversion:

    • [x] Create Pull Request on launchpad for changes that I've accumulated in the github branch here on Github
      • [x] Wait until the (revised) pull request is merged
    • [x] Ask Peter to merge his experimental branch into Launchpad master
    • [x] Optional, but nice: Make tests work

    Actual conversion:

    • [x] Convert bzr -> git using the steps outlined in my email (don't forget to remove the additional file mentioned by Peter)
    • [x] Push the converted, new 'productive' repository to Github
    • [x] Update the launchpad page:
      • [x] Close bug tracker
      • [x] Migrate open bug reports
      • [x] Switch translation service to git -> bzr import from Github
      • [ ] Optional: create a git mirror on Launchpad
      • [x] Update description: only used for translation, please report bugs and get the code on Github (link)
    • [x] Update website with the pre-prepared changes.
    • [x] Update project description here on Github to reflect that it is the main repository.
    meta 
    opened by jmehne 11
  • latex complains about

    latex complains about "Undefined control sequence."

    From logs when mnemosyne is run in command line and I tried to sync (it later fails, though likely for a different reason)

    Command `latex -interaction=nonstopmode tmp.tex` failed with rc=1
    Command output:
    This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=latex)
     restricted \write18 enabled.
    entering extended mode
    (./tmp.tex
    LaTeX2e <2020-02-02> patch level 2
    L3 programming layer <2020-02-14>
    (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls
    Document Class: article 2019/12/20 v1.4l Standard LaTeX document class
    (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo))
    (/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-dvips.def)
    No file tmp.aux.
    ! Undefined control sequence.
    <recently read> \mathcalc 
                              
    l.5 $\mathcalc
                  {O}(log n)$
    [1] (./tmp.aux) )
    (see the transcript file for additional information)
    Output written on tmp.dvi (1 page, 300 bytes).
    Transcript written on tmp.log.
    
    Command input:
    
    \documentclass[12pt]{article}
    \pagestyle{empty}
    \begin{document}
    $\mathcalc{O}(log n)$
    \end{document}
    
    opened by matkoniecz 9
  • Database not Saving Automatically

    Database not Saving Automatically

    Mnemosyne is stuck on giving me the same cards at startup. When I rate the first few cards, exit, and reopen Mnemosyne, none of the progress gets saved. It found out that general settings saves and editing cards saves but not (de)activating cards or reviewing cards. There is no error message or anything.

    I just found out that pressing "File->Save" works, but I have to press "Save" each time before I exit, and it won't save automatically. So it's not automatically saving when I exit Mnemosyne. I've tried restarting my computer to no avail. Is there some way I can fix this other than reinstalling Mnemosyne?

    I recorded a video of my error but found that I can't post it in here, so I'll just explain what I did in the video. The first time I opened Mnemsoyne, I did a few cards, exited, and reopened to the first card it gave me. Then I did some cards, saved it via "File->Save", exited, and reopened with everything saved. Finally, I did some cards, saved it (File->Save), and did a few more cards. When I reopened it the third time, only the cards that I did before I pressed "Save" were saved. Apparently Mnemosyne isn't automatically saving before I exit.

    opened by Elliot-TS 9
  • UTF8 encoding error when syncing Android to Windows

    UTF8 encoding error when syncing Android to Windows

    Hope it's Ok to post this here.

    image That is what I got when syncing my library between 2.1 Android version and 2.7 on PC. Can't push the remote version to PC due to the above. Never had this problem before & pushing cards from PC to Android was not a problem.

    udcc3 seems to be this Is there a way to search for the problematic chars in the database? I don't know how much of it is in plaintext.

    My cards are mix of English, Polish, Spanish, with some TeX too. My currently synced DB is 5,000+ cards and quite old.

    opened by wwiecek 8
  • latex in macOS

    latex in macOS

    I installed MiKTeX in order to view latex content in flashcards but I also had to make two other changes to finally make it work: 1-. In the .../Library/Mnemosyne/config.py file I changed the path for the latex and dvipng variables to /usr/local/bin/latex (and dvipng), which was the path where MikTeX installed the packages. 2-. In this same file, the latex command supposedly uses -interactiononstopmode option, but the right option is: -interaction=nonstopmode

    opened by atophys 8
  • LaTeX and other small images display too large on web browser

    LaTeX and other small images display too large on web browser

    After my pull request https://github.com/mnemosyne-proj/mnemosyne/pull/225, there was the unintended side effect of making expanding small images, such as LaTeX images, to the size of the screen. The change needs to be adjusted so that images larger than the screen are shrunk while images smaller than the screen do not change.

    I am planning to resolve it this weekend, I just wanted to make sure that it was logged in case I don't get around to it for a few weeks.

    opened by gbear605 0
  • Webserver Review Problem: Data salad after displaying the HTML source code

    Webserver Review Problem: Data salad after displaying the HTML source code

    Hello! o/ I discovered a problem that can be reproduced like this: Show question from Card A, then show the answer and rate the answer. Show question from card B. Show the HTML source of question B. But the HTML source code shows the question of the next card C (should be question B of course). Now show answer B. The answer is card C's question and card C's answer. Card B is evaluated and removed from the not-memorized-stack even though the answer was not shown.

    https://user-images.githubusercontent.com/108878285/186002311-485bd564-9116-4151-9fa0-44ff9e7a5a9e.mp4 https://drive.google.com/file/d/1QpacIv24UQ0LaQvNtqTfL589SirlFu8a/view?usp=sharing

    The reason could be: The web server "thinks" that card B should be evaluated after form = cgi.FieldStorage(fp=environ["wsgi.input"], environ=environ) was called. I have no idea how to quickly fix the problem. Unfortunately I'm not familiar with the code structures of Mnemosyne.

    opened by jooseef 3
  • Feature Request: Support tls for sync

    Feature Request: Support tls for sync

    It would be a nice feature, if the sync function would support tls. This would allow to sync the database secure over the internet.

    The required changes does not sound very complex. The client can simple use tls and the server can be revers proxy over a web-server by the user.

    opened by LuckyTurtleDev 1
This is a python package to get wards, districts,cities and provinces in Zimbabwe

Zim-Places Features This is a python package that allows you to search for cities, provinces, and districts in Zimbabwe.Zimbabwe is split into eight p

RONALD KANYEPI 2 Mar 01, 2022
Linux Backlight Manager

Is a program to manage your laptop keyboard backlights in linux. Tested on Tuxedo / Clevo / Monste models. Must be tested on other devices

Arshia Ihammi 4 Jan 14, 2022
Companion Web site for Fluent Python, Second Edition

Fluent Python, the site Source code and content for fluentpython.com. The site complements Fluent Python, Second Edition with extra content that did n

Fluent Python 49 Dec 08, 2022
Python script for converting obsidian md-file to html (recursively adds all link/images)

ObsidianToHtmlConverter I made a small python script for converting obsidian md-file to static (local) html (recursively adds all link/images) I made

47 Jan 03, 2023
Package pyVHR is a comprehensive framework for studying methods of pulse rate estimation relying on remote photoplethysmography (rPPG)

Package pyVHR (short for Python framework for Virtual Heart Rate) is a comprehensive framework for studying methods of pulse rate estimation relying on remote photoplethysmography (rPPG)

PHUSE Lab 261 Jan 03, 2023
SEH-Helper - Binary Ninja plugin for exploring Structured Exception Handlers

SEH Helper Author: EliseZeroTwo A Binary Ninja helper for exploring structured e

Elise 74 Dec 26, 2022
A simple script that can watch a list of directories for change and does some action

plot_watcher A simple script that can watch a list of directories and does some action when a specific kind of change happens In its current implement

Charaf Errachidi 12 Sep 10, 2021
Digitales Raumbuch

Helios Digitales Raumbuch Settings Moved to settings. Basic Commands Setting Up Your Users To create a normal user account, just go to Sign Up and fil

1 Nov 19, 2021
One line Brainfuck interpreter in Python

One line Brainfuck interpreter in Python

16 Dec 21, 2022
Objetivo: de forma colaborativa pasar de nodos de Dynamo a Python.

ITTI_Ed01_De-nodos-a-python ITTI. EXPERT TRAINING EN AUTOMATIZACIÓN DE PROCESOS BIM: OFFICIAL DE AUTODESK. Edición 1 Enlace al Master Enunciado: Traba

1 Jun 06, 2022
Generate Openbox Menus from a easy to write configuration file.

openbox-menu-generator Generate Openbox Menus from a easy to write configuration file. Example Configuration: ('#' indicate comments but not implement

3 Jul 14, 2022
Educational Repo. Used whilst learning Flask.

flask_python Educational Repo. Used whilst learning Flask. The below instructions will be required whilst establishing as new project. Install Flask (

Jordan 2 Oct 15, 2021
Python 101 Forever

🚀 Python 101 Forever 🚀 Official Python 101 Forever GitHub repository. START HERE - CHECK README SUBSCRIBE FOR UPDATES HERE Sponsors Contac

Hack Bulgaria 58 Nov 30, 2022
Null safe support for Python

Null Safe Python Null safe support for Python. Installation pip install nullsafe Quick Start Dummy Class class Dummy: pass Normal Python code: o =

Paaksing 13 Nov 17, 2022
Script para generar automatización de registro de formularios IEEH

Formularios_IEEH Script para generar automatización de registro de formularios IEEH Corresponde a un conjunto de script en python que permiten la auto

vhevia11 1 Jan 06, 2022
LPCV Winner Solution of Spring Team

LPCV Winner Solution of Spring Team

22 Jul 20, 2022
How did Covid affect businesses?

NYC_Business_Analysis How did Covid affect businesses? COVID's effect on NYC businesses We all know that businesses in NYC have been affected by COVID

AK 1 Jan 15, 2022
banking system with python, beginner friendly, preadvanced level

banking-system-python banking system with python, beginner friendly, preadvanced level Used topics Functions else/if/elif dicts methods parameters hol

Razi Falah 1 Feb 03, 2022
API wrapper for VCS hosting system.

PythonVCS API wrapper for VCS hosting system. Supported platforms Gitea Github, Gitlab, Bitbucket support will not, until that packages is not updated

MisileLaboratory 1 Apr 02, 2022
Tesla App Update Differences Extractor

Tesla App Update Differences Extractor Python program that finds the differences between two versions of the Tesla App. When Tesla updates the app a l

Adrian 5 Apr 11, 2022