Skip to main content

Parses the contents of a source code directory and determines the programming languages in use.

Project description

WhoDis

Parses the contents of a source code directory and determines the programming languages in use.

Languages Supported:

  • Go
  • Java
  • JavaScript
  • Python
  • Ruby

Usage

Import the module and create a new instance of WhoDis:

from whodis import WhoDis
blah = WhoDis()

WhoDis objects have a single method, parse(), which takes a single filepath (string) parameter:

blah.parse("/some/valid/path/with/source/code")

After parsing a valid path with at least one file in a supported language, the object will have four attributes:

# language - The dominant programming language in the source path.
# String.
# Possible string values are "go", "java", "js", "py", "rb".
blah.language
>>> "py"

 # all_languages - All languages present in the source path.
 # List of strings.
 # Possible list values are "go", "java", "js", "py", "rb".
blah.all_languages
>>> ["rb", "js"]

# files - All non-filtered files in the source path.
# List of strings.
blah.files
>>> ["__init__.py", "main.py", "README.md", "LICENSE.md", "requirements.txt"]

# files_by_language - All non-filtered files in the source path broken down by language.
# Dictionary with strings for keys and lists of strings for values.
# Possible key names are "go", "java", "js", "py", "rb".
blah.files_by_language
>>> {"rb": ["application_controller.rb", "model.rb"], "js": ["app.js"]}

FAQs

1. How does WhoDis work?

WhoDis is very naive. It will recursively find all files in a path, filter out certain directories (e.g. .git, build/packaging, virtual environments, etc.), look at the file extensions of the files returned, and group them by extension (e.g. .py). WhoDis then looks at which language has the most files and considers it the dominant language for the source code in the path.

2. What gets filtered out? Why filter?

Please look at the *_filters.py files, which should be quite easy to understand. The files getting filtered are in directories that are commonly associated with things like version control, building/packaging, and virtual environments. The reason for filtering is 1) to speed up WhoDis (e.g. a big .git can slow us down a lot), and 2) these directories usually contain files that are irrelevant/redundant to determining the programming languages being used. In short, filtered files shouldn't influence WhoDis' parsing.

3. Why only support Go, Java, JavaScript, Python, and Ruby?

I wrote WhoDis for use with another project that interacts with AWS Lambda. These languages are all natively supported by Lambda. Feel free to open a PR if you'd like additional language support!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whodis-1.0.1.tar.gz (5.1 kB view details)

Uploaded Source

Built Distribution

whodis-1.0.1-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file whodis-1.0.1.tar.gz.

File metadata

  • Download URL: whodis-1.0.1.tar.gz
  • Upload date:
  • Size: 5.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

File hashes

Hashes for whodis-1.0.1.tar.gz
Algorithm Hash digest
SHA256 904fe30390618479d6ccf1a07dfc271cef38b75dba37db8268147e0f1de02d05
MD5 4845c81570cd3f1e654a3d6d80563394
BLAKE2b-256 0f36820f82a709dd29c1ffec915390e26b4f8a62666105b89cb3c7db57ce23b4

See more details on using hashes here.

File details

Details for the file whodis-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: whodis-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.7

File hashes

Hashes for whodis-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 641f6ffec71f419588d4ec151d9cd6b553dcd9baa3f7efbf6ed61d8f8679053a
MD5 a1032ae440ad9ea25dee7c1395e29a3c
BLAKE2b-256 695495fc9be19012ddd8c8621613266c5339f13d40abbb205b99f2f073d1e095

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page