A slugifier that works in unicode

Overview

Unicode Slugify

Unicode Slugify is a slugifier that generates unicode slugs. It was originally used in the Firefox Add-ons web site to generate slugs for add-ons and add-on collections. Many of these add-ons and collections had unicode characters and required more than simple transliteration.

Usage

from slugify import slugify, SLUG_OK

# Default usage : lower, spaces replaced with "-", only alphanum and "-_~" chars, keeps unicode
slugify(u'Bän...g (bang)')
# u'bäng-bang'

# Keep capital letters and spaces
slugify(u'Bän...g (bang)', lower=False, spaces=True)
# u'Bäng bang'

# Replace non ascii chars with their "best" representation
slugify(u'北京 (capital of China)', only_ascii=True)
# u'bei-jing-capital-of-china'

# Allow some extra chars
slugify(u'北京 (capital of China)', ok=SLUG_OK+'()', only_ascii=True)
# u'bei-jing-(capital-of-china)'

# "snake_case" example
def snake_case(s):
    # As "-" is not in allowed Chars, first one (`_`) is used for space replacement
    return slugify(s, ok='_', only_ascii=True)
snake_case(u'北京 (capital of china)')
# u'bei_jing_capital_of_china'

# "CamelCase" example
def camel_case(s):
    return slugify(s.title(), ok='', only_ascii=True, lower=False)
camel_case(u'北京 (capital of china)')
# u'BeiJingCapitalOfChina'

Thanks

Tomaz Solc, unidecode, https://pypi.python.org/pypi/Unidecode

Comments
  • "pip install unicode-slugify" is missing files

    I cannot install this package with pip, the following happens

    $ sudo pip install unicode-slugify Downloading/unpacking unicode-slugify Could not find any downloads that satisfy the requirement unicode-slugify No distributions at all found for unicode-slugify Storing complete log in /home/tirithen/.pip/pip.log

    And the log says:


    /usr/bin/pip run on Wed Jan 25 13:58:45 2012 Downloading/unpacking unicode-slugify Getting page http://pypi.python.org/simple/unicode-slugify URLs to search for versions for unicode-slugify:

    • http://pypi.python.org/simple/unicode-slugify/ Getting page http://github.com/mozilla/unicode-slugify Analyzing links from page http://pypi.python.org/simple/unicode-slugify/ Skipping link http://github.com/mozilla/unicode-slugify (from http://pypi.python.org/simple/unicode-slugify/); not a file Analyzing links from page https://github.com/mozilla/unicode-slugify Skipping link https://github.com/opensearch.xml (from https://github.com/mozilla/unicode-slugify); unknown archive format: .xml Skipping link https://github.com/fluidicon.png (from https://github.com/mozilla/unicode-slugify); unknown archive format: .png Skipping link https://a248.e.akamai.net/assets.github.com/stylesheets/bundles/github-31ce35e65492efdddc8289c3acbc0cfc685612dc.css (from https://github.com/mozilla/unicode-slugify); unknown archive format: .css Skipping link https://github.com/mozilla/unicode-slugify/tree/4431bee634b19b8f2849c62c81fffa08375abfad (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/commits/master.atom (from https://github.com/mozilla/unicode-slugify); unknown archive format: .atom Skipping link https://github.com (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/plans (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/explore (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/features (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/blog (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/login?return_to=%2Fmozilla%2Funicode-slugify (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/watchers (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/network (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/pulls (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/issues (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/graphs (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify#readme (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http:// (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/zipball/master (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify.git (from https://github.com/mozilla/unicode-slugify); unknown archive format: .git Skipping link git://github.com/mozilla/unicode-slugify.git (from https://github.com/mozilla/unicode-slugify); unknown archive format: .git Skipping link https://github.com/mozilla/unicode-slugify/dismiss-tree-finder-help (from https://github.com/mozilla/unicode-slugify); not a file Skipping link javascript:; (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/tree/master (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/commits/master (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/branches (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/tags (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/downloads (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/commit/4431bee634b19b8f2849c62c81fffa08375abfad (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/issues/2 (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/davedash (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/commits/master/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/tree/4431bee634b19b8f2849c62c81fffa08375abfad/slugify (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/commit/0303c4b824bc7ee8b692a6ccc22037daee02b207 (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/brodie (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/blob/4431bee634b19b8f2849c62c81fffa08375abfad/.gitignore (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/commit/a082e5e847bf3e7a362a5e8cf1372251defe9935 (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/blob/4431bee634b19b8f2849c62c81fffa08375abfad/LICENSE (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/blob/4431bee634b19b8f2849c62c81fffa08375abfad/MANIFEST.in (from https://github.com/mozilla/unicode-slugify); unknown archive format: .in Skipping link https://github.com/mozilla/unicode-slugify/commit/f0fada39c86e61ad82b83604ba25d4fc16ee3f84 (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/mozilla/unicode-slugify/blob/4431bee634b19b8f2849c62c81fffa08375abfad/README.md (from https://github.com/mozilla/unicode-slugify); unknown archive format: .md Skipping link https://github.com/mozilla/unicode-slugify/blob/4431bee634b19b8f2849c62c81fffa08375abfad/requirements.txt (from https://github.com/mozilla/unicode-slugify); unknown archive format: .txt Skipping link https://github.com/mozilla/unicode-slugify/blob/4431bee634b19b8f2849c62c81fffa08375abfad/setup.py (from https://github.com/mozilla/unicode-slugify); unknown archive format: .py Skipping link https://github.com/mozilla/unicode-slugify/commit/5b2f6dd8c3e6bfa61cd2843c3f90962e38fc9b0d (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/about (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/contact (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/training (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://enterprise.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://status.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://get.gaug.es/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://speakerdeck.com (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://gist.github.com (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://mac.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://mobile.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://jobs.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://shop.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://octodex.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://help.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://developer.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://github.github.com/github-flavored-markdown/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://pages.github.com/ (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/site/terms (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/site/privacy (from https://github.com/mozilla/unicode-slugify); not a file Skipping link https://github.com/security (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://www.rackspace.com (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://www.rackspace.com%20 (from https://github.com/mozilla/unicode-slugify); not a file Skipping link http://www.rackspacecloud.com (from https://github.com/mozilla/unicode-slugify); not a file Could not find any downloads that satisfy the requirement unicode-slugify No distributions at all found for unicode-slugify Exception information: Traceback (most recent call last): File "/usr/lib/pymodules/python2.7/pip/basecommand.py", line 130, in main self.run(options, args) File "/usr/lib/pymodules/python2.7/pip/commands/install.py", line 223, in run requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) File "/usr/lib/pymodules/python2.7/pip/req.py", line 911, in prepare_files url = finder.find_requirement(req_to_install, upgrade=self.upgrade) File "/usr/lib/pymodules/python2.7/pip/index.py", line 154, in find_requirement raise DistributionNotFound('No distributions at all found for %s' % req) DistributionNotFound: No distributions at all found for unicode-slugify
    opened by tirithen 16
  • Slugify-ing foreign characters?

    Slugify-ing foreign characters?

    Calling: slugify.slufigy("Ставки земельного налога в городах Свердловской области в 2014 году")

    generates this slug: stavki-zemel'nogo-naloga-v-gorodakh-sverdlovskoi-oblasti-v-2014-godu

    The single quote char was unexpected. Is there a way to force the slugs to only contain alphanumeric or hyphen characters, even when using a foreign language?

    opened by jywsn 10
  • 'ascii' codec can't decode byte 0xc3 in position 361 at open('README.md').read(),

    'ascii' codec can't decode byte 0xc3 in position 361 at open('README.md').read(),

      Downloading unicode-slugify-0.1.3.tar.gz
        Complete output from command python setup.py egg_info:
        Traceback (most recent call last):
          File "<string>", line 20, in <module>
          File "/tmp/pip-build-s4ot22tg/unicode-slugify/setup.py", line 7, in <module>
            long_description=open('README.md').read(),
          File "/var/cache/drone/src/github.com/dz0ny/app/.tox/py34/lib/python3.4/encodings/ascii.py", line 26, in decode
            return codecs.ascii_decode(input, self.errors)[0]
        UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 361: ordinal not in range(128)
    
    opened by dz0ny 7
  • Drop python 2.6 support

    Drop python 2.6 support

    Fixes #24

    unidecode package no longer supports python 2.6.

    A side effect of this is being able to do io.open('README.md', encoding='utf-8').read() in the setup.py file

    opened by nitely 5
  • replace_latin boolean

    replace_latin boolean

    Mentioned in my first merge request, smart_boolean enables to replace common latin letters with their ascii representations.

    Example:

    from slugify import slugify
    >>> slugify(u'Bakıcı geldi')
    u'bak\u0131c\u0131-geldi'
    >>> slugify(u'Bakıcı geldi', smart_replace=True)
    u'bakici-geldi'
    

    So that people who does not have 'ı' letter in their keyboards will be able to match the string by using either 'ı' or 'i' from their keyboards.

    For current version, 'bakici' cannot match 'bakıcı'. But with smart_replace, 'bakıcı' and 'bakici' can both match 'bakıcı' because 'bakici' may represent 'bakıcı' within an English keyboard.

    List of common latin letters to replace

    • ı, ì, í, î, ï -> i -İ, Ì, Í, Î, Ï -> I
    • ö, ó, ò, ô, õ, ø -> o
    • Ö, Ò, Ó, Ô, Õ, Ø -> O
    • ü, ù, ú, û -> u
    • Ü, Ù, Ú, Û -> U
    • à, á, â, ã, ä, å -> a
    • À, Á, Â, Ã, Ä, Å -> A
    • æ -> ae
    • Æ -> AE
    • è, é, ê, ë -> e
    • È, É, Ê, Ë -> E
    • ñ -> n
    • Ñ -> N
    • ý, ÿ -> y
    • Ý, Ÿ -> Y
    • ş -> s
    • Ş -> S
    • ç -> c
    • Ç -> C
    • ğ -> g
    • Ğ -> G
    opened by ebsaral 4
  • Example from README is not accurate

    Example from README is not accurate

    The readme file shows this example:

    # Replace non ascii chars with their "best" representation
    slugify(u'北京 (capital of China)', only_ascii=True)
    # u'bei-jing-capital-of-china'
    

    but when running it locally, the result is different:

    In [1]: from slugify import slugify                                                                                                                                                           
    
    In [2]: slugify('北京 (capital of China)', only_ascii=True)                                                                                                                                   
    Out[2]: 'Bei Jing -capital-of-china'
    

    I'm using v0.1.3 and Python 3.6.8

    opened by humitos 3
  • correction for using only_ascii with lower=True and/or spaces=False

    correction for using only_ascii with lower=True and/or spaces=False

    Because unidecode can add Caps and/or spaces, it must be called before space striping and lowering. e.g:

    slugify(u'北京 (China)', only_ascii=True)
    # before this correction:
    'Bei Jing -china'
    # with this correction:
    'bei-jing-china'
    
    opened by DylannCordel 2
  • only_ascii boolean with the support of unidecode

    only_ascii boolean with the support of unidecode

    If you would like to include unidecoded within this slugifier, I also created this request. It's up to you to pick one. This covers more than latin letters: https://pypi.python.org/pypi/Unidecode

    Related to @davedash 's tweet: https://twitter.com/davedash/status/554723084918607872

    opened by ebsaral 2
  • python 3.x compat + tox and travis support

    python 3.x compat + tox and travis support

    Based on #18

    • Corrects it to be compatible with those python versions : 2.6, 2.7, 3.2, 3.3, 3.4.
    • Adds tox.ini file to be able to use automated tests via tox with those python versions.
    • Adds .travis.yml file to be able to use automated tests via travis with those python versions.
    opened by DylannCordel 1
  • UnicodeSlugField for Django

    UnicodeSlugField for Django

    I thought others might encounter the same problem as I did, so I'll share my solution and possibly get some feedback if there is a better way to do it.

    Problem: If you use slugs generated by unicode-slugify with Django's SlugField, you will be prevented from saving a form with a SlugField (e.g. in the Django Admin) if the field value is invalid by Django's slug standard.

    Solution: Replace SlugField with a new UnicodeSlugField which inherits everything from SlugField except that pesky validation. Add a new validator using unicode-slugify.

    opened by mathiasose 1
  • Don't rely on Django unless you have to

    Don't rely on Django unless you have to

    This package is awesome -- except for the fact that it pulls in Django just to handle unicode well. If there's a way to avoid this, we probably should.

    opened by fwenzel 1
  • UnicodeDecodeError installing in 3.6.8

    UnicodeDecodeError installing in 3.6.8

    I have recived a UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 361: ordinal not in range(128) error when installing using pip and Python 3.6.8. there is the trace:

    ERROR: Command errored out with exit status 1:
     command: /home/devikhxr/virtualenv/public_comohay.com/3.6/bin/python3.6_bin -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-68hcpkqo/unicode-slugify/setup.py'"'"'; __file__='"'"'/tmp/pip-install-68hcpkqo/unicode-slugify/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-2f7x6_ul
         cwd: /tmp/pip-install-68hcpkqo/unicode-slugify/
    Complete output (7 lines):
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-68hcpkqo/unicode-slugify/setup.py", line 7, in <module>
        long_description=open('README.md').read(),
      File "/home/devikhxr/virtualenv/public_comohay.com/3.6/lib64/python3.6/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 361: ordinal not in range(128)
    ----------------------------------------
    ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
    
    opened by cccaballero 0
  • Deprecation and syntax warnings in Python 3.8

    Deprecation and syntax warnings in Python 3.8

    Deprecation warning due to invalid escape sequences. Using raw strings or escaping them again helps in resolving this. Check https://github.com/asottile/pyupgrade/ for automatic fix of this.

    find . -iname '*.py' | grep -Ev 'rdf4|doc|benchmark|tool' | xargs -P4 -I{} python3.8 -Wall -m py_compile {}
    ./slugify/__init__.py:84: DeprecationWarning: invalid escape sequence \s
      new = re.sub('[%s\s]+' % space_replacement, space_replacement, new)
    
    opened by tirkarthi 0
  • Wiki changes

    Wiki changes

    FYI: The following changes were made to this repository's wiki:

    • defacing spam has been removed

    • the wiki has been disabled, as it was not used

    These were made as the result of a recent automated defacement of publically writeable wikis.

    opened by moz-hwine 0
  • Add badges in readme

    Add badges in readme

    Add badges to pypi, the code of conduct and the ci results in the readme.

    Examples:

    • https://github.com/Kinto/kinto/blob/master/README.rst
    • https://github.com/Kinto/kinto.js/blob/master/README.md
    opened by Natim 0
  • Conflict with python-slugify

    Conflict with python-slugify

    Both this project and python-slugify (which logzero uses as a dependency) have the root module as slugify which I'm guessing a lot of users have experienced. I like this package, but I think it'd help to rename the root folder something like UnicodeSlugify or unicodeslugify.

    Just a thought...

    opened by sdhutchins 2
Owner
Mozilla
This technology could fall into the right hands.
Mozilla
Returns unicode slugs

Python Slugify A Python slugify application that handles unicode. Overview Best attempt to create slugs from unicode strings while keeping it DRY. Not

Val Neekman 1.3k Jan 4, 2023
A python tool to convert Bangla Bijoy text to Unicode text.

Unicode Converter A python tool to convert Bangla Bijoy text to Unicode text. Installation Unicode Converter can be installed via PyPi. Make sure pip

Shahad Mahmud 10 Sep 29, 2022
Transparent proxy server that works as a poor man's VPN. Forwards over ssh. Doesn't require admin. Works with Linux and MacOS. Supports DNS tunneling.

sshuttle: where transparent proxy meets VPN meets ssh As far as I know, sshuttle is the only program that solves the following common case: Your clien

null 9.4k Jan 4, 2023
A Regex based linter tool that works for any language and works exclusively with custom linting rules.

renag Documentation Available Here Short for Regex (re) Nag (like "one who complains"). Now also PEGs (Parsing Expression Grammars) compatible with py

Ryan Peach 12 Oct 20, 2022
Fixes mojibake and other glitches in Unicode text, after the fact.

ftfy: fixes text for you >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง Full documentation: https://ftfy.readthedocs.org Testimonials “My life is li

Luminoso Technologies, Inc. 3.4k Jan 8, 2023
Returns unicode slugs

Python Slugify A Python slugify application that handles unicode. Overview Best attempt to create slugs from unicode strings while keeping it DRY. Not

Val Neekman 1.3k Jan 4, 2023
Python library that measures the width of unicode strings rendered to a terminal

Introduction This library is mainly for CLI programs that carefully produce output for Terminals, or make pretend to be an emulator. Problem Statement

Jeff Quast 305 Dec 25, 2022
Fixes mojibake and other glitches in Unicode text, after the fact.

ftfy: fixes text for you >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง Full documentation: https://ftfy.readthedocs.org Testimonials “My life is li

Luminoso Technologies, Inc. 3.4k Dec 29, 2022
Fixes mojibake and other glitches in Unicode text, after the fact.

ftfy: fixes text for you >>> print(fix_encoding("(ง'⌣')ง")) (ง'⌣')ง Full documentation: https://ftfy.readthedocs.org Testimonials “My life is li

Luminoso Technologies, Inc. 2.9k Feb 17, 2021
Detects members having unicode names. Public bot: @scarletwitchprobot

✨ Scarletwitch bot ✨ Detects unicode names members in a tg chat & provides a option to take action on that user ! Public bot: @scarletwitchprobot Supp

ÁÑÑÍHÌLÅTØR SPÄRK 18 Nov 12, 2022
Returns unicode slugs

Python Slugify A Python slugify application that handles unicode. Overview Best attempt to create slugs from unicode strings while keeping it DRY. Not

Val Neekman (AvidCoder) 1.3k Dec 23, 2022
My own Unicode compression algorithm

Zee Code ZCode is a custom compression algorithm I originally developed for a competition held for the Spring 2019 Datastructures and Algorithms cours

Vahid Zehtab 2 Oct 20, 2021
These scripts look for non-printable unicode characters in all text files in a source tree

find-unicode-control These scripts look for non-printable unicode characters in all text files in a source tree. find_unicode_control.py should work w

Siddhesh Poyarekar 25 Aug 30, 2022
A python tool to convert Bangla Bijoy text to Unicode text.

Unicode Converter A python tool to convert Bangla Bijoy text to Unicode text. Installation Unicode Converter can be installed via PyPi. Make sure pip

Shahad Mahmud 10 Sep 29, 2022
Unicode fuzzer for various purposes

UnicodeToy Unicode fuzzer for various purposes Unicode based on version 14.0 features Generate the shortest xss domain payload Generate unicode str, u

null 33 Nov 27, 2022
A quick script to spot the usage of Unicode Bidi (bidirectional) characters that could lead to an Invisible Backdoor

Invisible Backdoor Detector is a little Python script that allows you to spot and remove Bidi characters that could lead to an invisible backdoor. If you don't know what that is you should check the related paragraph.

SecSI 28 Dec 29, 2022
xlwings is a BSD-licensed Python library that makes it easy to call Python from Excel and vice versa. It works with Microsoft Excel on Windows and macOS. Sign up for the newsletter or follow us on twitter via

xlwings - Make Excel fly with Python! xlwings CE xlwings CE is a BSD-licensed Python library that makes it easy to call Python from Excel and vice ver

xlwings 2.5k Jan 6, 2023
A Python interface module to the SAS System. It works with Linux, Windows, and mainframe SAS. It supports the sas_kernel project (a Jupyter Notebook kernel for SAS) or can be used on its own.

A Python interface to MVA SAS Overview This module creates a bridge between Python and SAS 9.4. This module enables a Python developer, familiar with

SAS Software 319 Dec 19, 2022
A folder automation made using Watch-dog, it only works in linux for now but I assume, it will be adaptable to mac and PC as well

folder-automation A folder automation made using Watch-dog, it only works in linux for now but I assume, it will be adaptable to mac and PC as well Th

Parag Jyoti Paul 31 May 28, 2021
C.J. Hutto 3.8k Dec 30, 2022