mirror of
https://github.com/juancarlospaco/nim-requirementstxt
synced 2026-01-14 01:51:43 +00:00
No description
| src | ||
| tests | ||
| .gitignore | ||
| LICENSE | ||
| README.md | ||
| requirementstxt.nimble | ||
| temp.png | ||
RequirementsTxt
- Python
requirements.txtgeneric iterator parser for Nim. - No Regex used in the making of this film!
Use
for it in requirements(readFile("requirements.txt")):
echo it
for it in requirements(staticRead("requirements.txt")):
echo it
for it in requirements(readFile("requirements.txt"), [("*", "0")]): ## "1.*.*" becomes "1.0.0", uses multiReplace
echo it
1 Input argument can be filename: string. Based from the official spec: https://pip.readthedocs.io/en/1.1/requirements.html
Output
Yields 1 tuple per parsed line:
lineCurrent line being parsed (42, etc).editableBoolean whether this requirement is "editable".specifierString version specifier (For"flask>=1.5"is>=)vcsDistributed version control system used ("git","hg", etc).protocolNetwork protocol for transports ("http","https","ssh", etc)namePackage name parsed ("pytest", etc).versionPackage version string ("1.2.9", etc).uriURL if this requirement ofUritype ("https://github.com/user/repo.git", etc).extrasSequence of strings with a list of extras ("flask[extra1, extra2]"is@["extra1", "extra2"])blanksCurrent count of comments, blank lines, empty lines, etc (42, etc).privateCurrent count of Private custom repositories (Not PYPI).nestedCurrent count of recursively Nested requirements.txt files (42, etc).
Example Output:
(line: 9, editable: false, specifier: true, vcs: "git", protocol: "https", version: "1.6.0", name: "numpy", url: "https://github.com/user/repo.git", blanks: 1, nested: 0, private: 0, extras: @["full", "pdf"])
If you need a seq of tuple use sequtils.toSeq. It uses Effects Tags ReadIOEffect, WriteIOEffect.
Install
nimble install requirementstxt
Test
$ nimble test
[Suite] Requirements.txt generic parser tests
[OK] Big requirements.txt parsing
[OK] Empty requirements.txt parsing
[OK] Empty requirements.txt parsing 2
Success: Execution finished
Success: All tests passed
Test is using a big and complex requirements.txt.
Documentation
runnableExamplesincluded.
nim doc requirementstxt.nim
Supported DVCS
- git
- git+https
- git+ssh
- git+git
- hg+http
- hg+https
- hg+static-http
- hg+ssh
- svn
- svn+svn
- svn+http
- svn+https
- svn+ssh
- bzr+http
- bzr+https
- bzr+ssh
- bzr+sftp
- bzr+ftp
- bzr+lp
- No DVCS
Requisites
- None.
Dependencies
- None.
Stars
FAQ
- Why a generic iterator ?.
Generic so you can use string or StringStream or File.
iterator because requirements.txt are meant to have 1 dependency per line.
If you are familiar with Python, Nim iterator is like Python generator, Nim tuple is like Python NamedTuple.
