pip-parse is a JavaScript library for parsing and interpreting text content typically found in Python package management files, such as requirements.txt. It provides utilities for handling command-line flags and package requirements, supporting both strict and lenient parsing modes.
- Line Splitting: Handles lines ending with a backslash to support multi-line values.
- Command-Line Flag Parsing: Recognizes and processes various command-line flags with associated arguments.
- Requirement Parsing: Parses package requirements, URLs, and paths with optional version constraints.
- Lenient Parsing: Configurable mode to allow more flexible parsing with less strict validation.
To use pip-parse, you can include it in your project via require or import statement if you’re working in a Node.js environment.
npm install pip-parseParses the provided content into an array of parsed data.
content(string): The content of text to parse.loose(boolean, optional): Whether to allow lenient parsing. Defaults tofalse. Iffalse, the function will throw errors for unsupported flags, invalid URLs, or malformed requirements.
- An array of
ParsedDataobjects representing the parsed content.
const { parseFile } = require('pip-parse');
const content = `
-i https://example.com/simple
mypackage==1.0.0
`;
const parsedData = parseFile(content);
console.log(parsedData);Parses a single line of text to determine if it represents a command-line flag or a requirement.
line(string): The line of text to parse.loose(boolean, optional): Whether to allow lenient parsing. Defaults tofalse.
- An object representing the parsed data, or
undefinedif the line is a comment.
const { parseLine } = require('pip-parse');
const line = '-i https://example.com/simple';
const parsedLine = parseLine(line);
console.log(parsedLine);type(string): Always "CommandLineFlag"flag(string): The flag that was specified.args(string[]): Arguments associated with the flag.
type(string): Always "Requirement"markers(string|undefined): Optional markers for the requirement.subtype(string): The type of requirement (e.g., "PackageURL", "URL", "Path", "Package").package(string|undefined): The package name, if applicable.extras(string|undefined): Optional extras associated with the package.url(string|undefined): The URL, if applicable.path(string|undefined): The path, if applicable.versions(string[]|undefined): List of version constraints, if applicable.
The following command-line options are supported:
-i,--index-url--extra-index-url--no-index-c,--constraint-r,--requirement-e,--editable-f,--find-links--no-binary--only-binary--prefer-binary--require-hashes--pre--trusted-host--use-feature
Contributions are welcome! Please feel free to submit issues, feature requests, or pull requests.
This project is licensed under the MIT License. See the LICENSE file for details.