Giter Club home page Giter Club logo

colorsphere's Introduction

Tom Ritchford

Everything should be made as simple as possible, but no simpler.

Resumé: .pdf .md

My GitHub stats

My Python open source projects

This is a dashboard of my active Python open-source projects on Github, mostly small- to medium-sized libraries that try to do one useful thing as clearly and thoroughly as possible.

🌟 means "Stars"
👁 means "Subscribers"

🟢 means "Release version"
🕰 means "Most recent non-version commit"

(Last update 2024/03/21, 12:54:09 by https://github.com/rec/multi)

Production-ready

             🧿 safer 🧿     (🌟 173  👁 4)
      A safer writer for files and streams
24/01/15🟢Update version to v4.12.3
24/02/14🕰Update dependencies
               🗃 tdir 🗃     (🌟 2  👁 3)
     Create and fill a temporary directory
24/01/25🟢Update version to v1.8.2
24/03/20🕰Bump black from 24.2.0 to 24.3.0
                 🎨 nc 🎨     (🌟 4  👁 4)
             Named colors in Python
24/01/04🟢Update version to v1.0.2
24/02/14🕰Update dependencies
            🗝 dtyper 🗝     (🌟 17  👁 3)
            Fix and improve `typer`
24/01/25🟢Update version to v2.5.1
24/02/14🕰Update dependencies
              🏫 clsprop 🏫     (👁 2)
      Just like @property but for classes
24/01/25🟢Update version to v1.3.1
24/02/14🕰Update dependencies
             🖋 editor 🖋     (🌟 9  👁 3)
          Open the default text editor
24/01/25🟢Update version to v1.6.6
24/03/20🕰Bump black from 24.2.0 to 24.3.0
              🧵 threa 🧵     (🌟 2  👁 2)
                 Better threads
24/01/04🟢Update version to v1.9.1
24/02/14🕰Update dependencies
             ⛏ sproc ⛏     (🌟 10  👁 3)
         Subprocesseses for subhumanses
24/01/25🟢Update version to v2.4.1
24/02/14🕰Update dependencies
                🏺 fil 🏺     (🌟 3  👁 2)
         Read/write JSON/TOML/Yaml/txt
24/01/04🟢Update version to v1.4.3
24/02/14🕰Update dependencies
               🌱 xmod 🌱     (🌟 4  👁 3)
         Turn any object into a module
24/01/04🟢Update version to v1.8.1
24/03/20🕰Bump black from 24.2.0 to 24.3.0
             🛎 impall 🛎     (🌟 7  👁 3)
            Test-import all modules
24/01/25🟢Update version to v1.5.3
24/03/20🕰Bump black from 24.2.0 to 24.3.0
              🗜 gitz 🗜     (🌟 30  👁 4)
    Tiny useful git commands, some dangerous
24/01/04🟢Update version to v1.7.1
24/03/20🕰Bump black from 22.12.0 to 24.3.0
            🗂 datacls 🗂     (🌟 2  👁 2)
         Take the edge off `dataclass`
24/01/25🟢Update version to v4.8.0
24/02/14🕰Update dependencies
             🐜 abbrev 🐜     (🌟 3  👁 2)
              Expand abbreviations
24/01/04🟢Update version to v1.2.1
24/02/14🕰Update dependencies
                🎴 dek 🎴     (🌟 3  👁 3)
            The decorator-decorator
24/01/25🟢Update version to v1.4.2
24/03/20🕰Bump black from 24.2.0 to 24.3.0

Beta

                🏺 fil 🏺     (🌟 3  👁 2)
         Read/write JSON/TOML/Yaml/txt
24/01/04🟢Update version to v1.4.3
24/02/14🕰Update dependencies
               🔢 plur 🔢     (👁 2)
        Simple universal word pluralizer
23/12/30🟢Update version to v1.0.0
24/02/14🕰Update dependencies
               🍇 cfgs 🍇     (🌟 2  👁 3)
           XDG standard config files
23/10/05🟢Update version to v0.13.0
24/02/14🕰Update dependencies

Experimental

                 🎙 recs 🎙     (👁 3)
          recs: the Universal Recorder
24/01/07🟢Update version to v0.3.1
24/03/20🕰Bump black from 24.2.0 to 24.3.0
                🔉 vl8 🔉     (🌟 3  👁 3)
                Perturbed audio
20/11/25🟢Version v0.2.0
24/02/14🕰Update dependencies
               💡 litoid 💡     (👁 2)
             Sequence DMX lighting

24/02/14🕰Update dependencies
                🌐 nmr 🌐     (👁 2)
           Name all canonical things
23/02/02🟢Update to version v0.9.1
24/02/14🕰Update dependencies
             🗣 def_main 🗣     (👁 2)
              A decorator for main
23/02/02🟢Update to version v0.11.1
24/01/25🕰Run mypy in strict mode
             📓 hardback 📓     (👁 3)
        Hardcopy backups of digital data
19/06/08🟢New version v0.9.0
24/02/14🕰Update dependencies
               📦 backer 📦     (👁 3)
           Continuously back up files
23/02/02🟢Update to version v0.7.2
24/02/14🕰Update dependencies

Personal

              🐘 fortune 🐘     (👁 2)
     A Mastodon bot for /usr/games/fortune

24/02/14🕰Update dependencies
                📚 multi 📚     (👁 3)
          Manage all my other projects
23/02/02🟢Update to version v0.1.0
24/02/14🕰Modify multi/commands/poetry.py
⬜🟩🟦🟥 blocks 🟥🟦🟩⬜     (👁 3)
              Solve a block puzzle
23/02/02🟢Update to version v1.0.1
24/01/25🕰Run mypy in strict mode
                 ❓ test ❓     (👁 3)
         Tiny bits of experimental code

24/03/19🕰Several changes
             ⚫ dotfiles ⚫     (👁 3)
                  My dotfiles

24/01/23🕰Modify bash/environment-variables.sh, bin/run-test, bin/run-tests

Mothballed

              🌊 wavemap 🌊     (🌟 6  👁 5)
       Memory map WAVE or raw audio files
22/05/26🟢Version v2.0.1
24/02/14🕰Update dependencies
         🛍 loady 🛍     (🌟 6  👁 3)
       Load Python code and data from git

24/02/14🕰Update dependencies
               🏃 runs 🏃     (🌟 3  👁 4)
      Run a block of text as a subprocess
24/01/25🟢Update version to v1.2.2
24/02/14🕰Update dependencies

colorsphere's People

Contributors

anders-holst avatar rec avatar

Watchers

 avatar  avatar

Forkers

anders-holst

colorsphere's Issues

Displaying the ColorPicker blocks the main thread

Bringing up the ColorPicker blocks, is hard to interrupt, and will prevent a program from exiting naturally by "falling off the end".

This is no "bug" - it is intrinsic to a lot of GUIs in Python.

Like so many other C based programs, matplotlib has to run on the main thread, but that means it interacts badly with other Python programs, and control-C.

There is a nice solution.

You start a new multiprocessing.Process which communicate to the original process with a pair of queues. So the new process has matplotlib on its main thread, and you are free to continue.

Blocking on a multiprocessing.Queue until it becomes non-empty is very cheap.

To shut down, you put a None onto the queues and the receiving process reads those and sends a Quit command to matplotlib.

Bring all customization points into one or more dataclasses and document them

"Customization points" are the places that an end user can set values to change the behavior of the colorsphere.

Because of the dependency on matplotlib, this package can only use Python 3.7 and above. This is good news!, because we can use dataclasses, which are a great way to implement and document an API at the same time.

You can see I sketched out a single class here, but it's glued together with the callback handler. In the final state, there would be an almost pure dataclass with all the user settings in it, and the callback handler would simply contain that dataclass and nothing else.

`from_shell=False` does not display the colorsphere

The same problem exists with the original code, but here's a demo with slightly newer code.

If from_shell=True, everything works fine. If from_shell=False, then you can see another application is started, and then you see the numbers from 0 to 19 printed, but you do not see the colorsphere.

Moving these two lines out of the if statement makes no apparent difference.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.