<commit_before>Requirements
============

Client side Requirements
------------------------

- sudo, or root access on your client machine.
  (The server doesn't need admin access.)
- Python 2.7 or Python 3.5.

+-------+--------+------------+-----------------------------------------------+
| OS    | Method | Features   | Requirements                                  |
+=======+========+============+===============================================+
| Linux | NAT    | * IPv4 TCP + iptables DNAT, REDIRECT, and ttl modules.     |
+       +--------+------------+-----------------------------------------------+
|       | TPROXY | * IPv4 TCP + Linux with TPROXY support.                    |
|       |        | * IPv4 UDP + Python 3.5 preferred (see below).             |
|       |        | * IPv6 TCP + Python 2 may require PyXAPI_ (see below).     |
|       |        | * IPv6 UDP +                                               |
+-------+--------+------------+-----------------------------------------------+
| MacOS | PF     | * IPv4 TCP + You need to have the pfctl command.           |
+-------+--------+------------+-----------------------------------------------+

.. _PyXAPI: http://www.pps.univ-paris-diderot.fr/~ylg/PyXAPI/

Full UDP or DNS support with the TPROXY method requires the ``recvmsg()``
syscall. This is not available in Python 2, however is in Python 3.5 and
later. Under Python 2 you might find it sufficient installing PyXAPI_ to get
the ``recvmsg()`` function.

<commit_msg>Attempt work around of sphinx bug<commit_after>Requirements
============

Client side Requirements
------------------------

- sudo, or root access on your client machine.
  (The server doesn't need admin access.)
- Python 2.7 or Python 3.5.

+-------+--------+------------+-----------------------------------------------+
| OS    | Method | Features   | Requirements                                  |
+=======+========+============+===============================================+
| Linux | NAT    | * IPv4 TCP + iptables DNAT, REDIRECT, and ttl modules.     |
+       +--------+------------+-----------------------------------------------+
|       | TPROXY | * IPv4 TCP + Linux with TPROXY support.                    |
|       |        | * IPv4 UDP + Python 3.5 preferred (see below).             |
|       |        | * IPv6 TCP + Python 2 may require PyXAPI (see below).      |
|       |        | * IPv6 UDP +                                               |
+-------+--------+------------+-----------------------------------------------+
| MacOS | PF     | * IPv4 TCP + You need to have the pfctl command.           |
+-------+--------+------------+-----------------------------------------------+

.. _PyXAPI: http://www.pps.univ-paris-diderot.fr/~ylg/PyXAPI/

Full UDP or DNS support with the TPROXY method requires the ``recvmsg()``
syscall. This is not available in Python 2, however is in Python 3.5 and
later. Under Python 2 you might find it sufficient installing PyXAPI_ to get
the ``recvmsg()`` function.


{'fraction_non_alphanumeric': 0.34635761589403974, 'fraction_numerical': 0.011258278145695364, 'mean_word_length': 1.1170287316047653, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1318135', 'n_tokens_mistral': 780, 'n_tokens_neox': 704, 'n_words': 239}