Repo Home WPDrawBot - (Repo, Home, WP) A powerful programmatic 2D drawing application for MacOS X which generates graphics from Python scripts. (graphics, dev, mac)

Related tags

Miscellaneousdrawbot
Overview

DrawBot Test Bench DrawBot App Builder codecov

DrawBot

DrawBot is a powerful, free application for macOS that invites you to write Python scripts to generate two-dimensional graphics. The built-in graphics primitives support rectangles, ovals, (bezier) paths, polygons, text objects, colors, transparency and much more. You can program multi-page documents and stop-motion animations. Export formats include PDF, SVG, PNG, JPEG, TIFF, animated GIF and MP4 video.

To download the latest version of the app, go to
http://www.drawbot.com/content/download.html


Using DrawBot as a Python module

DrawBot can also be installed as a Python module, the app is not required.

Install

The easiest way is to use pip:

$ pip install git+https://github.com/typemytype/drawbot

To install it manually, follow these instructions:

download: https://github.com/typemytype/drawbot/archive/master.zip

run cd <path/where/you/have/downloaded/and/unzipped/drawBot> run python setup.py install

Usage

import drawBot

drawBot.newDrawing()
drawBot.newPage(1000, 1000)
drawBot.rect(10, 10, 100, 100)
drawBot.saveImage("~/Desktop/aRect.png")
drawBot.endDrawing()

It is adviced to start with newDrawing() and end with endDrawing(), to clear the instruction stack and remove installed fonts.


Compile DrawBot from source

compile drawBot.app (with UI)

Required packages:

(Most of these are available through pip.)

Compile:

DrawBot is compiled with py2app into an application package.

cd path/To/drawBot
python setupApp.py py2app

compile drawBot Python module only

This module only works on Mac OS as it requires PyObjC, AppKit, CoreText Quartz and more.

Required packages:

Compile:

cd path/To/drawBot
python setup.py install

Release protocol

Comments
  • PDF header

    PDF header

    when importing DrawBot and generating a PDF, I'm getting an error after an update;

    failed to find PDF header:%PDF' not found.`

    as a warning, but second PDF won't build with this error:

    It is advised to use 'size()' at the top of a script

    Is this a new issue or am I doing something wrong?

    opened by michielkauwatjoe 25
  • Formatted string origin with different alignment

    Formatted string origin with different alignment

    I am using FormattedString() with "right" and "center" alignments for multiline strings, and noticed that text() will draw it the origin as the bottom left corner of the final line of the text. This means that for right and centered text, I cannot easily predict the position of the text relative to the origin point, because it is dependent on the length of the content in the last line.

    A demo:

    for alignment in ['center', 'right']:
        for myString in ['AA\nAAAA', 'AAAA\nAA']:
            newPage(1000, 1000)
            translate(250, 250)
            oval(-10, -10, 20, 20)
            fs = FormattedString(myString, align=alignment, fontSize=200)
            b = BezierPath()
            b.text(fs)
            drawPath(b)
    

    I'm not sure if there's actually an issue to be solved here, but I am curious if there a way to get them placed consistently?

    Of course this is not an issue when using textBox() instead of text(), but unfortunately I am trying to use this in conjunction BezierPath() which does not have a textBox() method.

    Have you considered making the origin for center-aligned text at the bottom center, and for right-aligned at the bottom right? (this is similar to what happens to alignments of basic text fields in Illustrator). I understand that a FormattedString can have more than one alignment, so maybe that’s not a perfect solution either.

    I think I might be able to work around this by calculating the final line of the string, making a separate FormattedString object, getting the textSize()[0] of that, and then offsetting the text object by that amount. Just wondering if there’s a more straightforward way before I go that route.

    As always, many many thanks!

    opened by djrrb 22
  • Numpy again (and NetworkX) in DrawBotPy3

    Numpy again (and NetworkX) in DrawBotPy3

    (PS: since Just closed the last version of this issue, I can't re-open it—sorry.)

    Hate to dig up an old issue, but I'm at a point in a current project in DBPy3 where I am ahead of my skis regarding graph and network functions, and could sure use numpy and NetworkX. I can import numpy in the 2.7 version of DrawBot thanks to last year's thread and Just/Frederik's help (thanks again, guys), but not NetworkX—and I can't import either one in Py3.

    I'm happy to download and install these modules by hand and update directories myself—for whatever reason, perhaps because of permissions issues with a school machine, who knows—I can't install these modules with pip (either pip can't find them or appropriate versions of them, or DB can't find them once they're installed, and sudo runs me into permissions errors). I just need to know where to put them and what edits to what scripts need making. (Again feeling the shame of being a Python dilettante, sorry.)

    opened by MauriceMeilleur 20
  • numpy headaches

    numpy headaches

    This is less an issue than a question, and probably one somebody with more experience than I have wouldn't have problems with at all.

    But here goes: I can't for the life of me get scripts to import numpy. scimath, math, work fine, but here's the error thrown if I import numpy:

    Traceback (most recent call last): File "", line 1, in File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/init.py", line 153, in File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/add_newdocs.py", line 13, in File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy/lib/init.py", line 17, in ImportError: cannot import name scimath

    opened by MauriceMeilleur 19
  • Issue with application of OpenType features

    Issue with application of OpenType features

    Hi,

    I’m having issues applying OpenType features to text in a PDF. I’ve rewritten my own renderer to write original drawBot code so I can test it in the main DrawBot.app to rule out problems with my own code.

    For instance, the sups feature doesn’t apply. I’ve collected the files to test here. The example with the sups feature is in line 408 (result shows on page 3 in the PDF). The feature gets turned on beforehand and turned off afterwards. I found this to cause less confusion in the rendering than explicitly setting all available features at once.

    What puzzles me: If I reduce the code to just the necessary lines to render that text with the sups feature, it renders fine (never mind that the feature isn’t written professionally yet, as in all the glyphs in the example would get replaced at the moment, not contextually...). That means that somewhere along the way someone got confused with the commands to the point where features don’t get applied properly anymore.

    So this works, which is exactly the same code, only much less:

    import os
    
    newPage(595.275590551, 841.88976378)
    installFont(os.path.join(os.path.dirname(__file__), 'NonameSans-Regular.otf'))
    installFont(os.path.join(os.path.dirname(__file__), 'NonameSans-Bold.otf'))
    
    ########################
    
    cmykFill(0.0, 0.0, 0.0, 1.0, 1.0)
    stroke(None)
    strokeWidth(None)
    lineHeight(28.8)
    
    font('NonameSans-Bold')
    fontSize(24)
    language(None)
    textBox(u'''120m2''', (255.118110236, 501.732283465, 141.732283465, 56.6929133858), align = 'center')
    
    ########################
    
    fill(1.0, 0.411764705882, 0.490196078431, 1.0)
    stroke(None)
    strokeWidth(None)
    lineHeight(24.0)
    
    font('NonameSans-Regular')
    fontSize(20)
    language(None)
    textBox(u'''→''', (396.850393701, 527.811023622, 28.3464566929, 28.3464566929), align = 'center')
    
    ########################
    
    cmykFill(0.0, 0.0, 0.0, 1.0, 1.0)
    stroke(None)
    strokeWidth(None)
    lineHeight(28.8)
    
    font('NonameSans-Bold')
    fontSize(24)
    openTypeFeatures(sups=True)
    language(None)
    textBox(u'''120m2''', (425.196850394, 501.732283465, 141.732283465, 56.6929133858), align = 'center')
    openTypeFeatures(sups=False)
    
    opened by yanone 19
  • proposal: add support for ID and Class attributes to BezierPath

    proposal: add support for ID and Class attributes to BezierPath

    DrawBot can generate SVGs; SVGs can be embedded in HTML and styled with CSS just like the rest of the page.

    SVG objects need an ID or class so that CSS can refer to them. in the example below, id and class attributes were added manually after the SVG was generated.

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>SVG test</title>
    <style>
        svg { background-color: yellow; }
        #circle { fill: grey; }
        #circle:hover { stroke: magenta; }
        #square { stroke: red; stroke-width: 20px; }
        .shape:hover { fill: black !important; }
    </style>
    </head>
    <body>
    <!-- embedded SVG -->
    <svg height="800" version="1.1" width="800" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
     <path id='square' class='shape' d="M100,100 l400,0 l0,400 l-400,0 Z M100,100" fill="rgb(0,0,255)" transform="matrix(1,0,0,-1,0,800)"/>
     <path id='circle' class='shape' d="M641.42,358.58 c78.1,78.1,78.1,204.74,0,282.84 c-78.1,78.1,-204.74,78.1,-282.84,0 c-78.1,-78.1,-78.1,-204.74,0,-282.84 c78.1,-78.1,204.74,-78.1,282.84,0 Z M641.42,358.58" fill="rgb(255,0,0)" stroke="rgb(0,255,0)" stroke-width="20" transform="matrix(1,0,0,-1,0,800)"/>
    </svg>
    </body>
    </html>
    

    Proposal

    add support for setting an ID and/or class when the BezierPath is created:

    size(800, 800)
    
    B1 = BezierPath(ID='square', Class='shape')
    B1.rect(100, 100, 400, 400)
    fill(0, 0, 1)
    drawPath(B1)
    
    B2 = BezierPath(ID='circle', Class='shape')
    B2.oval(300, 300, 400, 400)
    fill(1, 0, 0)
    stroke(0, 1, 0)
    strokeWidth(20)
    drawPath(B2)
    
    saveImage('output.svg')
    

    thanks!

    opened by gferreira 18
  • Fonts are not reloaded even when changing on disk

    Fonts are not reloaded even when changing on disk

    I am using DrawBot to create proofs, the fonts used in those proofs are re-generated frequently. When I run the script from the DrawBot window, the font file that is picked up first stays active forever.

    My script is wrapped like this:

    newDrawing()
    	for fontFile in fontFiles:
    		newPage()
    		fs = FormattedString(
    			proofText, fontFile
    		)
    		text(fs)
    	for fontFile in fontFiles:
    		uninstallFont(fontFile)
    endDrawing()
    

    I explicitly added the newDrawing() and endDrawing() hoping it would have some kind of effect, but no. It works as expected when I run the script from the command line, but it sometimes is nice to have that visual output …

    bug 
    opened by frankrolf 18
  • *** DrawBot warning: OpenType feature 'numr/'dnom' not available ***

    *** DrawBot warning: OpenType feature 'numr/'dnom' not available ***

    Hi there, getting an error when trying to access Numerator numr and Denominator dnom features, not sure why!

    DrawBot: 3.118.1 (Extension) System: Mac OS 10.13.6

    Take a font like Source Serif Bold, which has simple numr and dnom features as follows:

    @FIG_LINING_TAB    =  [  zero       one       two       three       four       five       six       seven       eight       nine       ];
    @FIG_NUMR          =  [  zero.numr  one.numr  two.numr  three.numr  four.numr  five.numr  six.numr  seven.numr  eight.numr  nine.numr  ];
    @FIG_DNOM          =  [  zero.dnom  one.dnom  two.dnom  three.dnom  four.dnom  five.dnom  six.dnom  seven.dnom  eight.dnom  nine.dnom  ];
    
    @PUNCT_SMALL_FIG    = [ bracketleft      bracketright      parenleft      parenright      period      comma      ];
    @PUNCT_NUMR         = [ bracketleft.numr bracketright.numr parenleft.numr parenright.numr period.numr comma.numr ];
    @PUNCT_DNOM         = [ bracketleft.dnom bracketright.dnom parenleft.dnom parenright.dnom period.dnom comma.dnom ];
    
    #--------------------------------------
    feature numr { # Numerators
        lookup NUMR {
            sub @FIG_LINING_TAB by @FIG_NUMR;
            sub @PUNCT_SMALL_FIG by @PUNCT_NUMR;
        } NUMR;
    } numr;
    
    
    #--------------------------------------
    feature dnom { # Denominators
        sub @FIG_LINING_TAB by @FIG_DNOM;
        sub @PUNCT_SMALL_FIG by @PUNCT_DNOM;
    } dnom;
    

    And then the following DrawBot code:

    import drawBot as db
    
    db.newPage(500,100)
    s = db.FormattedString("123/45679",
        font="SourceSerifPro-Bold.otf",
        fontSize=100,
        openTypeFeatures={"dnom": True}
    )
    
    db.text(s, (20,20))
    

    The above results in

    *** DrawBot warning: OpenType feature 'dnom' not available ***
    

    Same with numr. If you replace dnom with frac, the code works, and both numerators and denominators show up.

    The numr and dnom features work in other programs (like Adobe InDesign), and FeaturePreview. Any idea why they aren't working here?

    DrawBot Error.zip

    opened by colinmford 16
  • Weird FormattedString issue on 10.15

    Weird FormattedString issue on 10.15

    I installed the 10.15 Beta on my secondary computer just to poke around a bit. When trying out some basic DrawBot, I stumbled upon this problem:

    content = 'abc'
    font_name = 'LucidaGrande'
    fs = FormattedString()
    fs.append(content, font=font_name, fontSize=20)
    fs.append(' ')
    fs.append(font_name, font='InputMono-Regular', fontSize=10)
    
    text(fs, (100, 200))
    

    The script runs, and displays output, but also the following traceback:

    Traceback (most recent call last):
      File "<untitled>", line 8, in <module>
      File "drawBot/drawBotDrawingTools.pyc", line 1611, in text
      File "drawBot/drawBotDrawingTools.pyc", line 1779, in textBox
      File "drawBot/context/baseContext.pyc", line 2310, in clippedText
      File "drawBot/context/baseContext.pyc", line 1180, in __getitem__
      File "drawBot/context/baseContext.pyc", line 904, in __init__
      File "drawBot/context/baseContext.pyc", line 912, in _setAttribute
      File "drawBot/context/baseContext.pyc", line 1354, in openTypeFeatures
      File "drawBot/context/baseContext.pyc", line 1368, in listOpenTypeFeatures
      File "drawBot/misc.pyc", line 362, in wrapper
      File "drawBot/context/tools/openType.pyc", line 509, in getFeatureTagsForFontName
      File "drawBot/context/tools/openType.pyc", line 495, in getFeatureTagsForDescriptions
      File "objc/_convenience_mapping.pyc", line 18, in __getitem__objectForKey_
      File "objc/_convenience.pyc", line 101, in container_unwrap
    KeyError: 'CTFeatureSelectorIdentifier'
    
    

    It is entirely possible this has nothing to do with DrawBot at all, but I thought it might be interesting to know about it.

    opened by frankrolf 15
  • Is it possible to detect missing glyphs in a font? Are there good workarounds?

    Is it possible to detect missing glyphs in a font? Are there good workarounds?

    I'm working on a simple tool for Drawbot (code on GitHub) to juxtapose characters in a string in letters from multiple fonts. The ultimate intent is to test fonts in early development, where I want to determine the proper relative proportions of characters (e.g. find the best x-height between a regular and a bold) and check that different styles in a larger type system are stylistically related (e.g. see that a sans and serif have a similar feeling between letters).

    For example, here's a partially-drawn lowercase set against two existing fonts:

    image

    This example uses a script font to make it obvious where characters are not-yet drawn. However, it would be more effective to have more control over the fallback font in these spaces that are present, but not the focus. It would be nice to do something like make these into light-gray letters or display notdef glyphs.

    A few things that seem like they might potentially help, though I haven't been able to accomplish them / find methods for them yet:

    • Directly detecting if a glyph is missing from the target font, and triggering some code
    • Detecting some UFO parameter of the fallback font, when the fallback font is used, and use that to change its size/color/content. E.g. checking if a character's x-height is equal to the x-height of the fallback font, then manipulating it.
    • Creating a list of all existing characters in a given font, and if the character in the test string doesn't match one of those, triggering some code.

    Hacky ways I've considered are:

    • Making all glyphs in Robofont, but leaving them empty until I can draw them (this would make the tool less helpful for others, though)
    • Finding a system font on macOS that is entirely bullets/rectangles/something similar, though even if such a system font exists (I don't know of any), this still wouldn't allow the flexibility or control that would be ideal to make this truly useful.

    I've already asked @justvanrossum, and he suggested filing an issue here, as detecting missing glyphs is not something he is aware of, but something which might be useful. If there is a simpler way to handle a case like this, I'd be excited to learn about it! If it would take building a new feature, however, I'd be happy to contribute however I can.

    Thanks for building such a great set of software!

    opened by thundernixon 15
  • [question] position of first baseline?

    [question] position of first baseline?

    In a text box, how does DrawBot specify the position of the first baseline for a given font? I am currently working on a script that layers different fonts, and need to calculate the baseline offset – unfortunately that’s trickier than expected.

    A common assumption is just subtracting the hhea.ascent value from the top of the text frame, but it’s not that simple – especially in fonts where hhea.ascent + |hhea.descent| != 1000.

    Here is my test data (for simplicity’s sake, font size = UPM = 1000):

        # SourceSansPro-Bold
        # head.yMax: 1009
        # hhea.ascent: 984
        # hhea.descent: -273
        # hhea.lineGap: 0
        # baseline is 855 below top of text frame
    
        # SourceSerifPro-Light
        # head.yMax: 976
        # hhea.ascent: 1036
        # hhea.descent: -335
        # hhea.lineGap: 0
        # baseline is 850 below top of text frame
    
        # MyriadPro-Light
        # head.yMax: 935
        # hhea.ascent: 750
        # hhea.descent: -250
        # hhea.lineGap: 200
        # baseline is 750 below top of text frame
    

    This may have been solved by @petrvanblokland – I assume pageBot can deal with baselines?

    question 
    opened by frankrolf 15
  • Cancelling with command-period crahses hard

    Cancelling with command-period crahses hard

    import time
    
    for i in range(100):
        print(i)
        time.sleep(0.2)
    

    Type command-period while the above is running. It exists with a hard crash Illegal instruction: 4

    opened by justvanrossum 8
  • Code completion currently doesn't seem to work

    Code completion currently doesn't seem to work

    Traceback (most recent call last):
      File "/Users/just/code/git/drawbot/dist/DrawBot.app/Contents/Resources/lib/python3.9/drawBot/ui/codeEditor.py", line 288, in _pythonWordCompletions
    TypeError: __init__() got an unexpected keyword argument 'source'
    
    opened by justvanrossum 0
  • missing module »cmath«

    missing module »cmath«

    Hi all, since the update to 3.129 (python3.10) it seems that the module »cmath« is missing. When I'm using the pandas-tool (https://pandas.pydata.org) or just using import cmath an error Message pops up: »ModuleNotFoundError: No module named 'cmath'«

    opened by READ 5
  • deprecated workflow

    deprecated workflow

    Warning: The set-output command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

    https://github.com/typemytype/drawbot/actions/runs/3750328273/jobs/6369899166#step:12:10

    opened by typemytype 1
  • listNamedInstances return wrong value

    listNamedInstances return wrong value

    Hi,

    I tried recently to get instances name of a variable using listNamedInstances(fontPath) I tried different variable font (mine and some from Google Font) and the function always return an OrderedDict which contain only the first instance.

    Here are some results with Google Fonts :

    OpenSans OrderedDict([('OpenSansRoman-Light', {'wght': 800.0, 'wdth': 75.0})])

    Montserrat OrderedDict([('Montserrat-Thin', {'wght': 900.0})])

    Raleway OrderedDict([('Raleway-Thin', {'wght': 900.0})])

    Inter OrderedDict([('Inter-Regular_Thin', {'wght': 900.0, 'slnt': -10.0})])

    opened by HugoJourdan 5
Releases(3.129)
  • 3.129(Dec 22, 2022)

    • Upgrade to python 3.9!!
    • textBox box: negative rectangles will be normalized.
    • Fix bug while extracting variable font name ids.
    • Improve ImageObject generators.
    • Add support for formatting code, see Python menu.
    • Improve support for pathlib.Path where ever a path is needed.
    • Support for saveImage("NSImage") and saveImage("PIL") returning image objects.
    • Add support for norm, lerp and remap.
    • Support formattedText.appendGlyph(index): adding glyphs by index.
    • Add with drawing() wrapping newDrawing() and endDrawing().
    Source code(tar.gz)
    Source code(zip)
    DrawBot.dmg(51.88 MB)
  • 3.128(Aug 9, 2021)

  • 3.127(Apr 29, 2021)

    • Allow Path objects in places where a path is an argument: saveImage(pathObject), image(pathObject, ...)
    • Add support for asyncio by lauching the app with corefoundationasyncio.
    • Remove mov context in favor of mp4 as QTKit is not supported anymore.
    • Always draw a white background while rendering to mp4.
    • Improve reading out and using fonts from disk, use them direclty instead of installing them.
    • Update documentation.
    Source code(tar.gz)
    Source code(zip)
    DrawBot.dmg(45.61 MB)
  • 3.126(Jun 2, 2020)

    • Improve update checker.
    • Fix docs for listOpenTypeFeatures.
    • Add argument while saving an animated gif: loop.
    • Add argument while saving an image: antiAliasing.
    • Improve the difference between kerning (an OpenType feature) and tracking (adding white space between characters).
    • Add textBoxCharacterBounds(text, box) returning a list of typesetted bounding boxes.
    • Improve text(..) typesetting with multiline text and paragraph styles.
    • Add formattedString.url(url).
    • Add linkURL(url, box).
    • Add option continuous in Variable(.., continuous=False).
    Source code(tar.gz)
    Source code(zip)
    DrawBot.dmg(45.16 MB)
  • 3.125(Apr 22, 2020)

  • 3.124(Mar 28, 2020)

  • 3.123(Mar 3, 2020)

    • Fully notarized and built with GitHub Actions!!!!
    • Improve pip installer.
    • Support viewBox in svg output.
    • Point attributes of a BezierPath are immutable.
    • Fix bug when an FormattedString contains an empty last line.
    • Don't optimize an empty BezierPath.
    • Improve updater message.
    • Upgrade code editor lexer to python3.
    • Upgrade internal tool potrace and mkbitmap.
    • Add context-specific attributes for BezierPath and FormattedString: svgLink, svgID, svgClass.
    Source code(tar.gz)
    Source code(zip)
    DrawBot.dmg(44.74 MB)
  • 3.122(Nov 3, 2019)

    • Adding bezierPath.expandStroke(width, lineCap="round", lineJoin="round", miterLimit=10) (thanks to Bahman Eslami)
    • Improved internal OpenType feature tags setting
    • Improved complex formattedString type setting
    • Improved alignment with text() and FormattedString
    • Added a DrawBot frontend for pip/PyPI to make it super easy to install third-party packages: see menu Python -> Install Python Packages
    • Fixed text stroke behavior (but is a breaking change): strokeWidth on text no longer scales with the fontSize
    • Removed support for .mov export on 10.15 and up (QTKit is no longer supported there)
    • Fixed extracting single frames from .gif files
    • Improved setup.py, so drawbot-as-a-module can be easily installed with pip using a github URL
    • All test now run on Travis CI (and soon also on GitHub Actions)
    • Removed Python 2 code
    • Many small issues were fixed
    Source code(tar.gz)
    Source code(zip)
    DrawBot.dmg(49.96 MB)
A Python feed reader library.

reader is a Python feed reader library. It aims to allow writing feed reader applications without any business code, and without enforcing a dependenc

266 Dec 30, 2022
Programa principal de la Silla C.D.P.

Silla CDP Página Web Contáctenos Lista de contenidos: Información del proyecto. Licencias. Contacto. Información del proyecto Silla CDP, o Silla Corre

Silla Control de Postura 1 Dec 02, 2021
Simplified web browser made in python for a college project

Python browser Simplified web browser made in python for a college project. Web browser has bookmarks, history, multiple tabs, toolbar. It was made on

AmirHossein Mohammadi 9 Jul 25, 2022
Um pequeno painel de consulta

Spynel Um pequeno painel com consultas de: IP CEP PLACA CNPJ OBS: caso execute o script pelo termux, recomendo que use o da F-Droid por ser mais atual

Spyware 12 Oct 25, 2022
[x]it! support for working with todo and check list files in Sublime Text

[x]it! for Sublime Text This Sublime Package provides syntax-highlighting, shortcuts, and auto-completions for [x]it! files. Features Syntax highlight

Jan Heuermann 18 Sep 19, 2022
A telegram bot which programed to countdown.

countdown-vi this is a telegram bot which programed to countdown. usage well, first you should specify a exact interval. there is 5 column, very first

Arya Shabane 3 Feb 15, 2022
Blender addons - A collection of Blender tools I've written for myself over the years.

gret A collection of Blender tools I've written for myself over the years. I use these daily so they should be bug-free, mostly. Feel free to take and

217 Jan 08, 2023
Python / C++ based particle reaction-diffusion simulator

ReaDDy (Reaction Diffusion Dynamics) is an open source particle based reaction-diffusion simulator that can be configured and run via Python. Currentl

ReaDDy 46 Dec 09, 2022
Fix Eitaa Messenger's Font Problem on Linux

Fix Eitaa Messenger's Font Problem on Linux

6 Oct 15, 2022
A wide AOI generator tool.

Dark Generator A wide AOI generator tool. Information Installation To Install you have to have python 3.x and pip installed on your system. If you hav

Darkest Surface 12 Dec 26, 2022
A curated list of awesome things related to Pydantic! 🌪️

Awesome Pydantic A curated list of awesome things related to Pydantic. These packages have not been vetted or approved by the pydantic team. Feel free

Marcelo Trylesinski 186 Jan 05, 2023
laTEX is awesome but we are lazy -> groff with markdown syntax and inline code execution

pyGroff A wrapper for groff using python to have a nicer syntax for groff documents DOCUMENTATION Very similar to markdown. So if you know what that i

Subhaditya Mukherjee 27 Jul 23, 2022
A fast python implementation of DTU MVS 2014 evaluation

DTUeval-python A python implementation of DTU MVS 2014 evaluation. It only takes 1min for each mesh evaluation. And the gap between the two implementa

82 Dec 27, 2022
The bidirectional mapping library for Python.

bidict The bidirectional mapping library for Python. Status bidict: has been used for many years by several teams at Google, Venmo, CERN, Bank of Amer

Joshua Bronson 1.2k Dec 31, 2022
Regular Expressions - Use regular expressions to detect date format

A list of all the resources used https://regex101.com/ - To test regex https://w

Ravika Nagpal 1 Jan 04, 2022
Lags valorant servers by rapidly picking up and throwing shorties.

Lags valorant servers by rapidly picking up and throwing shorties.

Eric Still 9 Dec 30, 2021
Set named timers for cooking, watering plants, brewing tea and more.

Timer Set named timers for cooking, watering plants, brewing tea and more. About Use Mycroft when your hands are messy or you need more that the one t

OpenVoiceOS 3 Nov 02, 2022
Run-Your-Own Firefox Sync Server

Run-Your-Own Firefox Sync Server This is an all-in-one package for running a self-hosted Firefox Sync server. It bundles the "tokenserver" project for

Mozilla Services 1.7k Dec 30, 2022
A weekly dive into commonly used modules in the Rust ecosystem, with story flavor!

The goal of this project is to bring the same concept as PyMOTW to the Rust world. PyMOTW was an invaluable resource for me when I was learning Python years ago, and I hope that I can help someone in

Scott Lyons 20 Aug 26, 2022
A pairs trade is a market neutral trading strategy enabling traders to profit from virtually any market conditions.

A pairs trade is a market neutral trading strategy enabling traders to profit from virtually any market conditions. This strategy is categorized as a statistical arbitrage and convergence trading str

Kanupriya Anand 13 Nov 27, 2022