https://github.com/jeanralphaviles/comment_parser
Python module to extract comments from source code files of various types.
https://github.com/jeanralphaviles/comment_parser
comment-parser extract-comments python
Last synced: 18 days ago
JSON representation
Python module to extract comments from source code files of various types.
- Host: GitHub
- URL: https://github.com/jeanralphaviles/comment_parser
- Owner: jeanralphaviles
- License: mit
- Created: 2015-08-30T23:57:35.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2025-05-19T21:22:32.000Z (9 months ago)
- Last Synced: 2026-01-06T06:49:34.409Z (about 1 month ago)
- Topics: comment-parser, extract-comments, python
- Language: Python
- Homepage:
- Size: 80.1 KB
- Stars: 102
- Watchers: 3
- Forks: 30
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- starred-awesome - comment_parser - Python module to extract comments from source code files of various types. (Python)
README
# Comment Parser
[](https://github.com/jeanralphaviles/comment_parser/actions/workflows/test.yml)
[](https://github.com/jeanralphaviles/comment_parser/actions/workflows/deploy.yml)
[](https://pypi.python.org/pypi/comment_parser/)
[](https://pypi.python.org/pypi/comment_parser/)
[](https://pypi.python.org/pypi/comment_parser/)
[](https://pypi.python.org/pypi/comment_parser/)
Python module used to extract comments from source code files of various types.
## Installation
### Prerequisites
* libmagic
### Linux/Unix
```shell
sudo pip3 install comment_parser
```
### OSX and Windows
Additionally, complete the special installation requirements for
[python-magic](https://github.com/ahupp/python-magic).
## Usage
To use, simply run:
```python
>>> from comment_parser import comment_parser
>>> # Returns a list of comment_parser.parsers.common.Comments
>>> comment_parser.extract_comments('/path/to/source_file')
>>> # Or
>>> comment_parser.extract_comments_from_str('...')
```
### extract_comments signatures
```python
def extract_comments(filename, mime=None):
"""Extracts and returns the comments from the given source file.
Args:
filename: String name of the file to extract comments from.
mime: Optional MIME type for file (str). Note some MIME types accepted
don't comply with RFC2045. If not given, an attempt to deduce the
MIME type will occur.
Returns:
Python list of parsers.common.Comment in the order that they appear in
the source file.
Raises:
UnsupportedError: If filename is of an unsupported MIME type.
"""
pass
def extract_comments_from_str(code, mime=None):
"""Extracts and returns comments from the given source string.
Args:
code: String containing code to extract comments from.
mime: Optional MIME type for code (str). Note some MIME types accepted
don't comply with RFC2045. If not given, an attempt to deduce the
MIME type will occur.
Returns:
Python list of parsers.common.Comment in the order that they appear in
the source code.
Raises:
UnsupportedError: If code is of an unsupported MIME type.
"""
pass
```
### Comments Interface
```python
class Comment(object):
"""Represents comments found in source files."""
def text(self):
"""Returns the comment's text.
Returns:
String
"""
pass
def line_number(self):
"""Returns the line number the comment was found on.
Returns:
Int
"""
pass
def is_multiline(self):
"""Returns whether this comment was a multiline comment.
Returns:
True if comment was a multiline comment, False if not.
"""
pass
def __str__(self):
pass
def __eq__(self, other):
pass
```
## Development
### Install Dependencies
```shell
pip install -r requirements.txt -r requirements-dev.txt
```
### Running locally
Start python in the base of repository.
```python
from comment_parser import comment_parser
comment_parser.extract_comments('foo.c', mime='text/x-c')
```
### Running tests
```shell
python -m pytest
```
### Running pylint
```shell
pylint comment_parser
```
### Running formatter
```shell
yapf -rip .
```
### Deploying to PyPi
```shell
python setup.py sdist
twine upload dist/*
```
## Supported Programming Languages
| Language | Mime String |
|------------ |------------------------- |
| C | text/x-c |
| C++/C# | text/x-c++ |
| Go | text/x-go |
| HTML | text/html |
| Java | text/x-java-source |
| Javascript | application/javascript |
| Python | text/x-python |
| Python | text/x-script.python |
| Ruby | text/x-ruby |
| Shell | text/x-shellscript |
| XML | text/xml |
And more to come!
*Check comment_parser.py for corresponding MIME types.*