GithubHelp home page GithubHelp logo

cookiecutter / whichcraft Goto Github PK

View Code? Open in Web Editor NEW
68.0 9.0 18.0 45 KB

This package provides cross-platform cross-python shutil.which functionality.

License: BSD 3-Clause "New" or "Revised" License

Makefile 1.08% PowerShell 29.13% Batchfile 6.96% Python 62.82%

whichcraft's Introduction

whichcraft

image

image

image

image

Code style: black

That code in my care
That sly command-line stare
That strips my operating system bare
It's whichcraft

This package provides cross-platform cross-python shutil.which functionality.

Usage

On Linux, Mac, Windows for Python 2.7 or any of the maintained 3s:

>>> from whichcraft import which
>>> which('date')
'/bin/date'
>>> which('calendar')
'/bin/calendar'
>>> which('cookiecutter')
'/Users/pydanny/.envs/fun/bin/cookiecutter'
>>> which('a-made-up-name') is None
True

Notes

This is a shim of the shutil.which function that's designed to work across multiple versions of Python and inside of windows. The code for Python 2.x is based on Python 3 code that I extracted from source. I originally did this for Cookiecutter but pulled it out in order to reduce line count for that project.

Edgecase: Date function works perfectly on mac os and linux system, hence returns string. But is an in-built function in windows hence returns none as value when called in windows.

whichcraft's People

Contributors

edwardbetts avatar ncoghlan avatar nooby-newbie avatar pydanny avatar rooterkyberian avatar sobolevn avatar terrameijar avatar thatfloflo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

whichcraft's Issues

Please release new package w/correct whichcraft.__version__

Hi :)

I know, 465d532 fixed the mismatch of whichcraft.__version__, but the https://pypi.org/project/whichcraft/0.6.0 release still contains the wrong __version__ = "0.5.3" line

And this breaks my custom generalized dependency checks that I do in most of my projects, so I need to do hacky workarounds for whichcraft as requirement ;)

Can you please quickly make a new 0.6.1 release or so?

BTW, in case you don't know it: There is https://pypi.org/project/setuptools-scm , a nice official https://www.pypa.io tool for automatically determining project versions based on Git tags and passing them to setup() by using a simple setup entry point, also offering the feature of additionally writing the version into a Python module for keeping everything automatically consistent. I use it in all my Python projects, and even in some non-Python projects :)

Kind regards,
Stefan

error on windows

E:\Project\whichcraft>python test_whichcraft.py
============================= test session starts =============================
platform win32 -- Python 2.7.10, pytest-2.9.1, py-1.4.31, pluggy-0.3.1
rootdir: E:\Project\whichcraft, inifile:
plugins: cov-2.2.1
collected 2 items

test_whichcraft.py F.

================================== FAILURES ===================================
____________________________ test_existing_command ____________________________

def test_existing_command():
cmd = which('date')
assert cmd
E assert None
test_whichcraft.py:9: AssertionError
===================== 1 failed, 1 passed in 0.17 seconds ======================

reference to cookiecutter/cookiecutter#703

This part fails on empty string

if any(cmd.lower().endswith(ext.lower()) for ext in pathext):

split on string that usually ends with ";" will generate empty string as last item.

As every string can end with empty string, this will always return plain version, not suffixed one

Unicode characters in README.rst breaks compilation with python-3.6

I've locally patched the FreeBSD port of py-whichcraft to avoid a compilation problem with python-3.6.x:

=======================<phase: configure      >============================
===>   py36-whichcraft-0.5.2 depends on package: py36-setuptools>0 - found
===>   py36-whichcraft-0.5.2 depends on file: /usr/local/bin/python3.6 - found
===>   py36-whichcraft-0.5.2 depends on file: /usr/local/bin/ccache - found
===>  Configuring for py36-whichcraft-0.5.2
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "setup.py", line 35, in <module>
    readme = open("README.rst").read()
  File "/usr/local/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 1067: ordinal not in range(128)
*** Error code 1

Stop.

Looks like some unicode characters sneaked into README.rst. The patch is available here:

https://svnweb.freebsd.org/ports/head/devel/py-whichcraft/files/patch-README.rst?revision=481787&view=co

I'd just paste it into this report, but I doubt the subtleties of the whitespace changes would survive the process.

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.