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
Convert your Gyrosco.pe travels to GPX files

gyroscope2gpx This little python joint will do you a favor of taking your "Travel" export from Gyroscope (https://gyrosco.pe) and turn it into a bunch

nick g 4 Oct 02, 2022
Jarvis Python BOT acts like Google-assistance

Jarvis-Python-BOT Jarvis Python BOT acts like Google-assistance Setup Add Mail ID (Gmail) in the file at line no 82.

Ishan Jogalekar 1 Jan 08, 2022
⚡KiCad library containing footprints and symbols for inductive analog keyboard switches

Inductive Analog Switches This library contains footprints and symbols for inductive analog keyboard switches for use with the Texas Instruments LDC13

Elias Sjögreen 3 Jun 30, 2022
A type based dependency injection framework for Python 3.9+

Alluka A type based dependency injection framework for Python 3.9+. Installation You can install Alluka from PyPI using the following command in any P

Lucina 16 Dec 15, 2022
Cylc: a workflow engine for cycling systems

Cylc: a workflow engine for cycling systems. Repository master branch: core meta-scheduler component of cylc-8 (in development); Repository 7.8.x branch: full cylc-7 system.

The Cylc Workflow Engine 205 Dec 20, 2022
Custom python interface to xstan (a modified (cmd)stan)

Custom python interface to xstan (a modified (cmd)stan) Use at your own risk, currently everything is very brittle and will probably be changed in the

2 Dec 16, 2021
Python implementation of the Lox language from Robert Nystrom's Crafting Interpreters

pylox Python implementation of the Lox language from Robert Nystrom's Crafting Interpreters. https://craftinginterpreters.com. This only implements th

David Beazley 37 Dec 28, 2022
emoji-math computes the given python expression and returns either the value or the nearest 5 emojis as measured by cosine similarity.

emoji-math computes the given python expression and returns either the value or the nearest 5 emojis as measured by cosine similarity.

Andrew White 13 Dec 11, 2022
Stock Monitoring

Stock Monitoring Description It is a stock monitoring script. This repository is still under developing. Getting Started Prerequisites & Installing pi

Sission 1 Feb 03, 2022
Function Plotter✨

Function-Plotter Build With : Python PyQt5 unittest matplotlib Getting Started This is an list of needed instructions to set up your project locally,

Ahmed Lotfy 3 Jan 06, 2022
Google Foobar challenge solutions from my experience and other's on the web.

Google Foobar challenge Google Foobar challenge solutions from my experience and other's on the web. Note: Problems indicated with "Mine" are tested a

Islam Ayman 6 Jan 20, 2022
Rotating cube with hand

I am still working on this project :)) To-Do(Present): = It needs an algorithm to fine tune my hand's coordinates for rotation of our cube (initial o

Jay Desale 2 Dec 26, 2021
It converts ING BANK account historic into a csv file you can import in HomeBank application.

ing2homebank It converts your ING Bank account historic csv file into another csv file you can import in HomeBank application

1 Feb 14, 2022
Basic-Killfeed - A simple DayZ Console Killfeed

Basic-Killfeed A simple DayZ Console Killfeed. Setup Install Python Version 3.10

Nick 1 Apr 25, 2022
Runs macOS on linux with qemu.

mac-on-linux-with-qemu Runs macOS on linux with qemu. Pre-requisites qemu-system-x86_64 dmg2img pulseaudio python[click] Usage After cloning the repos

Arindam Das 177 Dec 26, 2022
An ultra fast cross-platform multiple screenshots module in pure Python using ctypes.

Python MSS from mss import mss # The simplest use, save a screen shot of the 1st monitor with mss() as sct: sct.shot() An ultra fast cross-platfo

Mickaël Schoentgen 799 Dec 30, 2022
lets learn Python language with basic examples. highly recommended for beginners who just start coding.

Lets Learn Python 🐍 Learn python from basic programs. learn python from scratch. 1.Online python compiler: https://www.onlinegdb.com/online_python_co

Subhranshu Choudhury 1 Jan 18, 2022
Number calculator application.

Number calculator application.

Michael J Bailey 3 Oct 08, 2021
Python meta class and abstract method library with restrictions.

abcmeta Python meta class and abstract method library with restrictions. This library provides a restricted way to validate abstract methods. The Pyth

Morteza NourelahiAlamdari 8 Dec 14, 2022
Code for the manim-generated scenes used in 3blue1brown videos

This project contains the code used to generate the explanatory math videos found on 3Blue1Brown. This almost entirely consists of scenes generated us

Grant Sanderson 4.1k Jan 02, 2023