fune/netwerk/protocol/http/make_outgoing_tables.py
Ricky Stewart 02a7b4ebdf Bug 1654103: Standardize on Black for Python code in mozilla-central.
Allow-list all Python code in tree for use with the black linter, and re-format all code in-tree accordingly.

To produce this patch I did all of the following:

1. Make changes to tools/lint/black.yml to remove include: stanza and update list of source extensions.

2. Run ./mach lint --linter black --fix

3. Make some ad-hoc manual updates to python/mozbuild/mozbuild/test/configure/test_configure.py -- it has some hard-coded line numbers that the reformat breaks.

4. Make some ad-hoc manual updates to `testing/marionette/client/setup.py`, `testing/marionette/harness/setup.py`, and `testing/firefox-ui/harness/setup.py`, which have hard-coded regexes that break after the reformat.

5. Add a set of exclusions to black.yml. These will be deleted in a follow-up bug (1672023).

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D94045
2020-10-26 18:34:53 +00:00

58 lines
1.4 KiB
Python

# This script exists to auto-generate Http2HuffmanOutgoing.h from the table
# contained in the HPACK spec. It's pretty simple to run:
# python make_outgoing_tables.py < http2_huffman_table.txt > Http2HuffmanOutgoing.h
# where huff_outgoing.txt is copy/pasted text from the latest version of the
# HPACK spec, with all non-relevant lines removed (the most recent version
# of huff_outgoing.txt also lives in this directory as an example).
import sys
sys.stdout.write(
"""/*
* THIS FILE IS AUTO-GENERATED. DO NOT EDIT!
*/
#ifndef mozilla__net__Http2HuffmanOutgoing_h
#define mozilla__net__Http2HuffmanOutgoing_h
namespace mozilla {
namespace net {
struct HuffmanOutgoingEntry {
uint32_t mValue;
uint8_t mLength;
};
static const HuffmanOutgoingEntry HuffmanOutgoing[] = {
"""
)
entries = []
for line in sys.stdin:
line = line.strip()
obracket = line.rfind("[")
nbits = int(line[obracket + 1 : -1])
lastbar = line.rfind("|")
space = line.find(" ", lastbar)
encend = line.rfind(" ", 0, obracket)
enc = line[space:encend].strip()
val = int(enc, 16)
entries.append({"length": nbits, "value": val})
line = []
for i, e in enumerate(entries):
sys.stdout.write(" { 0x%08x, %s }" % (e["value"], e["length"]))
if i < (len(entries) - 1):
sys.stdout.write(",")
sys.stdout.write("\n")
sys.stdout.write(
"""};
} // namespace net
} // namespace mozilla
#endif // mozilla__net__Http2HuffmanOutgoing_h
"""
)