This is a Python client for the PurgoMalum web service.
pip install purgomalum
or
python setup.py install
To use the basic filtering you can call the contains_profanity
or the retrieve_filtered_text
methods from the client:
>>> from purgo_malum import client
>>> client.contains_profanity('You are an @a$$hole')
True
>>> client.retrieve_filtered_text('You are an @a$$hole')
u'You are an ********'
The client functions also support adding words to the profanity list, setting your own filter text, and setting your own filter characters:
>>> from purgo_malum import client
>>> client.contains_profanity('You are a good friend', add='you')
True
>>> client.retrieve_filtered_text('You are a good friend', add='you,are', fill_text='[filtered]')
u'[filtered] [filtered] a good friend'
>>> client.retrieve_filtered_text('You are a good friend', add='you,are', fill_char='|')
u'||| ||| a good friend'
You can also get the raw data that the PurgoMalum API returns by calling the raw
version of the APIs:
>>> from purgo_malum import client
>>> client.retrieve_filtered_text_raw('You are an @a$$hole', 'json')
{u'result': u'You are an ********'}
>>> client.retrieve_filtered_text_raw('You are an @a$$hole', 'plain')
u'You are an ********'
>>> client.retrieve_filtered_text_raw('You are an @a$$hole', 'xml')
u'<?xml version="1.0" encoding="UTF-8" standalone="yes"?><PurgoMalum xmlns="http://www.purgomalum.com"><result>You are an ********</result></PurgoMalum>'
This can be helpful in the event that the API changes and/or you feel you can use the raw data in some manner.
You can also see the URL that is created for a specific request by using the build_url
method (mainly helpful for testing):
>>> client.build_url('test text', 'json', add='test', fill_text='[filtered]')
u'https://www.purgomalum.com/service/json?text=test+text&add=test&fill_text=%5Bfiltered%5D'
Tests have been for python 2.7 and python 3 using pytest
. The unit tests do call the actual PurgoMalum production API in order to test against potential API changes.
Before running tests make sure to install pytest, pytest-cov, pytest-mock, and mock (already included in requirements.txt).
To execute the tests and generate a code coverage report run the following:
pytest --cov-report term-missing --cov=purgo_malum/
You should see:
Name Stmts Miss Cover Missing
-------------------------------------------------------
purgo_malum/__init__.py 0 0 100%
purgo_malum/client.py 54 0 100%
-------------------------------------------------------
TOTAL 54 0 100%
This is my first offering to the open source community. If you see any issues with this client library and/or potential improvements please let me know and I will make the necessary updates.
If this is helpful to you in any please consider a small donation.