aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatěj Cepl <mcepl@cepl.eu>2024-06-02 21:56:50 +0200
committerBryan Gardiner <bog@khumba.net>2024-07-19 20:30:21 -0700
commit42c55b72d7796c58a5fd13517429e6587c0d9c66 (patch)
tree1b3d83d034ea657065f42682cfcbf8febe405e8e
parent424f8f66d0b93946a4bd215727e722173d2263f3 (diff)
downloadlazygl2srht-42c55b72d7796c58a5fd13517429e6587c0d9c66.tar.gz
feat: add split_long_str() splitting strings keeping lines intact
todo.sr.ht has limited size of comments to 16k characters. When splitting a string to multiple ones, we don't want to split lines in the middle. Also, start at least some unit tests.
-rwxr-xr-ximport_issues.py18
-rw-r--r--tests/209_description.txt786
-rw-r--r--tests/__init__.py0
-rw-r--r--tests/test_import_issues.py52
4 files changed, 856 insertions, 0 deletions
diff --git a/import_issues.py b/import_issues.py
index 93c4128..c9ffffd 100755
--- a/import_issues.py
+++ b/import_issues.py
@@ -145,9 +145,27 @@ logging.basicConfig(
ID_RE = re.compile(r"^[0-9]+$")
+# todo.sr.ht seems to be limited to less than 16k comments
+# to be sure, we will do just 12k
+MAX_SIZE_COMMENT = 12 * 1024
+
tickets_to_be_closed = []
+def split_long_str(in_str: str, max_len: int = MAX_SIZE_COMMENT) -> list[str]:
+ out = []
+ tmp_str = ""
+ for line in in_str.splitlines(keepends=True):
+ if len(tmp_str + line) < max_len:
+ tmp_str += line
+ else:
+ out.append(tmp_str)
+ tmp_str = line
+ if len(tmp_str) > 0:
+ out.append(tmp_str)
+ return out
+
+
def get_labels(tracker: str) -> list[dict[str, str]]:
"""
collects labels for your named tracker
diff --git a/tests/209_description.txt b/tests/209_description.txt
new file mode 100644
index 0000000..79de873
--- /dev/null
+++ b/tests/209_description.txt
@@ -0,0 +1,786 @@
+**https://pastebin.com/FDcfSU2z More readable here** (doesn't have to be)
+
+```
+sudo pip install m2crypto==0.24.0
+Collecting m2crypto==0.24.0
+Downloading https://files.pythonhosted.org/packages/58/75/362faac80a1bc2742b4b696dc350518312043d568bfd2687a9270f18da88/M2Crypto-0.24.0.tar.gz (184kB)
+100% |████████████████████████████████| 194kB 234kB/s
+Building wheels for collected packages: m2crypto
+Running setup.py bdist_wheel for m2crypto ... error
+Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-cIFksT/m2crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d /tmp/tmpfQntJipip-wheel- --python-tag cp27:
+running bdist_wheel
+running build
+running build_py
+copying M2Crypto/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/threading.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ftpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EC.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Rand.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2xmlrpclib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ASN1.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/SMIME.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/init.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EVP.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/X509.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/util.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BN.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/callback.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BIO.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Engine.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DH.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Err.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/httpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/RC4.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/AuthCookie.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+creating build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Connection.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/TwistedProtocolWrapper.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Context.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Session.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Checker.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/SSLServer.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/cb.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Cipher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/ssl_dispatcher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/timeout.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+creating build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKeyRing.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/constants.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKey.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/packet.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+running build_ext
+building 'M2Crypto.__m2crypto' extension
+swigging SWIG/m2crypto.i to SWIG/m2crypto_wrap.c
+swig -python -D__x86_64 -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -includeall -modern -builtin -outdir build/lib.linux-x86_64-2.7/M2Crypto -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:152: Warning 305: Bad constant value (ignored).
+/usr/include/x86_64-linux-gnu/bits/wchar.h:38: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+/usr/include/stdint.h:250: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+SWIG/_bio.i:64: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rand.i:21: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_evp.i:169: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dh.i:36: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rsa.i:43: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dsa.i:31: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:241: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:242: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_x509.i:323: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_util.i:11: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ec.i:111: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_engine.i:168: Warning 454: Setting a pointer/reference variable may leak memory.
+creating build/temp.linux-x86_64-2.7
+creating build/temp.linux-x86_64-2.7/SWIG
+x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-DmWv1o/python2.7-2.7.14=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -I/tmp/pip-build-cIFksT/m2crypto/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-2.7/SWIG/_m2crypto_wrap.o -DTHREADING
+SWIG/_m2crypto_wrap.c:4186:35: error: ‘CRYPTO_NUM_LOCKS’ undeclared here (not in a function); did you mean ‘CRYPTO_UNLOCK’?
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~~~~~~~
+CRYPTO_UNLOCK
+SWIG/_m2crypto_wrap.c: In function ‘lib_init’:
+SWIG/_m2crypto_wrap.c:4567:5: warning: implicit declaration of function ‘SSLeay_add_all_algorithms’; did you mean ‘SSLeay_add_ssl_algorithms’? [-Wimplicit-function-declaration]
+SSLeay_add_all_algorithms();
+^~~~~~~~~~~~~~~~~~~~~~~~~
+SSLeay_add_ssl_algorithms
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand’:
+SWIG/_m2crypto_wrap.c:4971:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:4975:5: warning: implicit declaration of function ‘BN_init’; did you mean ‘bio_init’? [-Wimplicit-function-declaration]
+BN_init(&rnd);
+^~~~~~~
+bio_init
+SWIG/_m2crypto_wrap.c:4971:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand_range’:
+SWIG/_m2crypto_wrap.c:5000:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:5000:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+SWIG/_m2crypto_wrap.c: In function ‘rand_pseudo_bytes’:
+SWIG/_m2crypto_wrap.c:5131:5: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
+ret = RAND_pseudo_bytes(blob, n);
+^~~
+In file included from /usr/include/openssl/crypto.h:32:0,
+from /usr/include/openssl/bio.h:20,
+from /usr/include/openssl/err.h:21,
+from SWIG/_m2crypto_wrap.c:3829:
+/usr/include/openssl/rand.h:47:1: note: declared here
+DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
+^
+SWIG/_m2crypto_wrap.c: In function ‘digest_final’:
+SWIG/_m2crypto_wrap.c:5249:34: error: dereferencing pointer to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->digest->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_new’:
+SWIG/_m2crypto_wrap.c:5266:49: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(ctx = (HMAC_CTX *)PyMem_Malloc(sizeof(HMAC_CTX)))) {
+^~~~~~~~
+SWIG/_m2crypto_wrap.c:5270:5: warning: implicit declaration of function ‘HMAC_CTX_init’; did you mean ‘HMAC_CTX_new’? [-Wimplicit-function-declaration]
+HMAC_CTX_init(ctx);
+^~~~~~~~~~~~~
+HMAC_CTX_new
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_free’:
+SWIG/_m2crypto_wrap.c:5275:5: warning: implicit declaration of function ‘HMAC_CTX_cleanup’; did you mean ‘HMAC_CTX_get_md’? [-Wimplicit-function-declaration]
+HMAC_CTX_cleanup(ctx);
+^~~~~~~~~~~~~~~~
+HMAC_CTX_get_md
+SWIG/_m2crypto_wrap.c: In function ‘hmac_init’:
+SWIG/_m2crypto_wrap.c:5286:5: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
+if (!HMAC_Init(ctx, kbuf, klen, md)) {
+^~
+In file included from /usr/include/openssl/hmac.h:13:0,
+from /usr/include/openssl/ssl.h:56,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/hmac.h:28:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
+^
+SWIG/_m2crypto_wrap.c: In function ‘hmac_final’:
+SWIG/_m2crypto_wrap.c:5314:34: error: dereferencing pointer to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->md->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_ctx_new’:
+SWIG/_m2crypto_wrap.c:5353:55: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(ctx = (EVP_CIPHER_CTX *)PyMem_Malloc(sizeof(EVP_CIPHER_CTX)))) {
+^~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_final’:
+SWIG/_m2crypto_wrap.c:5434:34: error: dereferencing pointer to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(obuf = PyMem_Malloc(ctx->cipher->block_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘pkey_get_modulus’:
+SWIG/_m2crypto_wrap.c:5582:17: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
+switch (pkey->type) {
+^~
+SWIG/_m2crypto_wrap.c:5593:35: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
+if (!BN_print(bio, rsa->n)) {
+^~
+SWIG/_m2crypto_wrap.c:5618:35: error: dereferencing pointer to incomplete type ‘DSA {aka struct dsa_st}’
+if (!BN_print(bio, dsa->pub_key)) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dh_generate_parameters’:
+SWIG/_m2crypto_wrap.c:5815:5: warning: ‘DH_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dh = DH_generate_parameters(plen, g, gendh_callback, (void *)pyfunc);
+^~
+In file included from /usr/include/openssl/bn.h:31:0,
+from /usr/include/openssl/asn1.h:24,
+from /usr/include/openssl/dh.h:18,
+from SWIG/_m2crypto_wrap.c:4243:
+/usr/include/openssl/dh.h:135:1: note: declared here
+DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator,
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5861:12: error: dereferencing pointer to incomplete type ‘DH {aka struct dh_st}’
+if (!dh->p) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘rsa_generate_key’:
+SWIG/_m2crypto_wrap.c:6319:5: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
+rsa = RSA_generate_key(bits, e, genrsa_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/rsa.h:13:0,
+from SWIG/_m2crypto_wrap.c:4246:
+/usr/include/openssl/rsa.h:193:1: note: declared here
+DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6348:29: error: dereferencing pointer to incomplete type ‘DSA_SIG {aka struct DSA_SIG_st}’
+return bn_to_mpi(dsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dsa_generate_parameters’:
+SWIG/_m2crypto_wrap.c:6378:5: warning: ‘DSA_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, genparam_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/dsa.h:28:0,
+from /usr/include/openssl/x509.h:32,
+from /usr/include/openssl/ssl.h:50,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/dsa.h:122:1: note: declared here
+DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits,
+^
+SWIG/_m2crypto_wrap.c: In function ‘sk_ssl_cipher_value’:
+SWIG/_m2crypto_wrap.c:7284:12: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
+return sk_SSL_CIPHER_value(stack, idx);
+^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7463:43: error: dereferencing pointer to incomplete type ‘X509_NAME {aka struct X509_name_st}’
+return PyString_FromStringAndSize(name->bytes->data, name->bytes->length);
+^~
+SWIG/_m2crypto_wrap.c: At top level:
+SWIG/_m2crypto_wrap.c:7523:2: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
+x509v3_lhash() {
+^~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509v3_lhash’:
+SWIG/_m2crypto_wrap.c:7524:12: warning: return from incompatible pointer type [-Wincompatible-pointer-types]
+return lh_new(NULL, NULL); / Should probably be lh_CONF_VALUE_new but won't compile. */
+^~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘make_stack_from_der_sequence’:
+SWIG/_m2crypto_wrap.c:7640:13: warning: implicit declaration of function ‘ASN1_seq_unpack_X509’; did you mean ‘ASN1_item_unpack’? [-Wimplicit-function-declaration]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^~~~~~~~~~~~~~~~~~~~
+ASN1_item_unpack
+SWIG/_m2crypto_wrap.c:7640:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^
+SWIG/_m2crypto_wrap.c: In function ‘get_der_encoding_stack’:
+SWIG/_m2crypto_wrap.c:7656:16: warning: implicit declaration of function ‘ASN1_seq_pack_X509’; did you mean ‘ASN1_item_pack’? [-Wimplicit-function-declaration]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^~~~~~~~~~~~~~~~~~
+ASN1_item_pack
+SWIG/_m2crypto_wrap.c:7656:14: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8186:31: error: dereferencing pointer to incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
+return bn_to_mpi(ecdsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_sslv2_method’:
+SWIG/_m2crypto_wrap.c:18315:26: warning: implicit declaration of function ‘SSLv2_method’; did you mean ‘SSLv23_method’? [-Wimplicit-function-declaration]
+result = (SSL_METHOD *)SSLv2_method();
+^~~~~~~~~~~~
+SSLv23_method
+SWIG/_m2crypto_wrap.c:18315:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (SSL_METHOD *)SSLv2_method();
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_tlsv1_method’:
+SWIG/_m2crypto_wrap.c:18341:3: warning: ‘TLSv1_method’ is deprecated [-Wdeprecated-declarations]
+result = (SSL_METHOD *)TLSv1_method();
+^~~~~~
+In file included from /usr/include/openssl/ct.h:13:0,
+from /usr/include/openssl/ssl.h:61,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/ssl.h:1627:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur const SSL_METHOD TLSv1_method(void)) / TLSv1.0 */
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_c2i_asn1_object’:
+SWIG/_m2crypto_wrap.c:25775:27: warning: implicit declaration of function ‘c2i_ASN1_OBJECT’; did you mean ‘d2i_ASN1_OBJECT’? [-Wimplicit-function-declaration]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^~~~~~~~~~~~~~~
+d2i_ASN1_OBJECT
+SWIG/_m2crypto_wrap.c:25775:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^
+SWIG/_m2crypto_wrap.c: In function ‘init__m2crypto’:
+SWIG/_m2crypto_wrap.c:31639:79: warning: implicit declaration of function ‘SWIG_From_wchar_t’; did you mean ‘SWIG_FromCharPtr’? [-Wimplicit-function-declaration]
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~~~~~~~
+SWIG_FromCharPtr
+SWIG/_m2crypto_wrap.c:31639:120: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31639:119: error: ‘L’ undeclared (first use in this function)
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:119: note: each undeclared identifier is reported only once for each function it appears in
+SWIG/_m2crypto_wrap.c:31640:3: error: expected ‘)’ before ‘SWIG_Python_SetConstant’
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MIN",SWIG_From_int((int)((-(0x7fffffff+L'\0') -1))));
+^~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31691:118: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31996:1: error: expected declaration or statement at end of input
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5866:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_g’:
+SWIG/_m2crypto_wrap.c:5874:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_pub’:
+SWIG/_m2crypto_wrap.c:5882:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_priv’:
+SWIG/_m2crypto_wrap.c:5890:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_e’:
+SWIG/_m2crypto_wrap.c:5999:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_n’:
+SWIG/_m2crypto_wrap.c:6007:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6334:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6349:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:6353:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_p’:
+SWIG/_m2crypto_wrap.c:6391:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_q’:
+SWIG/_m2crypto_wrap.c:6399:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_g’:
+SWIG/_m2crypto_wrap.c:6407:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_pub’:
+SWIG/_m2crypto_wrap.c:6415:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_priv’:
+SWIG/_m2crypto_wrap.c:6423:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_key’:
+SWIG/_m2crypto_wrap.c:6670:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6674:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_keylen’:
+SWIG/_m2crypto_wrap.c:6678:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7464:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8187:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:8191:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+At top level:
+SWIG/_m2crypto_wrap.c:4187:13: warning: ‘lock_count’ defined but not used [-Wunused-variable]
+static long lock_count[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~
+SWIG/_m2crypto_wrap.c:4186:27: warning: ‘lock_cs’ defined but not used [-Wunused-variable]
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~
+error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
+
+Failed building wheel for m2crypto
+Running setup.py clean for m2crypto
+Failed to build m2crypto
+Installing collected packages: m2crypto
+Found existing installation: M2Crypto 0.26.2
+Uninstalling M2Crypto-0.26.2:
+Successfully uninstalled M2Crypto-0.26.2
+Running setup.py install for m2crypto ... error
+Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-cIFksT/m2crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-cWZrMo-record/install-record.txt --single-version-externally-managed --compile:
+running install
+running build
+running build_py
+creating build
+creating build/lib.linux-x86_64-2.7
+creating build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/threading.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ftpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EC.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Rand.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2xmlrpclib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/ASN1.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/SMIME.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/init.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/EVP.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/X509.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/util.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BN.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/callback.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/BIO.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Engine.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DH.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/Err.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/httpslib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/RC4.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/DSA.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/AuthCookie.py -> build/lib.linux-x86_64-2.7/M2Crypto
+copying M2Crypto/m2urllib.py -> build/lib.linux-x86_64-2.7/M2Crypto
+creating build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Connection.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/TwistedProtocolWrapper.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Context.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Session.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Checker.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/SSLServer.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/cb.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/Cipher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/ssl_dispatcher.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+copying M2Crypto/SSL/timeout.py -> build/lib.linux-x86_64-2.7/M2Crypto/SSL
+creating build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/RSA.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKeyRing.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/constants.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/PublicKey.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/init.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+copying M2Crypto/PGP/packet.py -> build/lib.linux-x86_64-2.7/M2Crypto/PGP
+running build_ext
+building 'M2Crypto.__m2crypto' extension
+swigging SWIG/m2crypto.i to SWIG/m2crypto_wrap.c
+swig -python -D__x86_64 -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -includeall -modern -builtin -outdir build/lib.linux-x86_64-2.7/M2Crypto -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
+/usr/include/x86_64-linux-gnu/sys/cdefs.h:152: Warning 305: Bad constant value (ignored).
+/usr/include/x86_64-linux-gnu/bits/wchar.h:38: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+/usr/include/stdint.h:250: Warning 490: Fragment 'SWIG_From_wchar_t' not found.
+SWIG/_bio.i:64: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rand.i:21: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_evp.i:169: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dh.i:36: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_rsa.i:43: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_dsa.i:31: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:241: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ssl.i:242: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_x509.i:323: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_pkcs7.i:44: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_util.i:11: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_ec.i:111: Warning 454: Setting a pointer/reference variable may leak memory.
+SWIG/_engine.i:168: Warning 454: Setting a pointer/reference variable may leak memory.
+creating build/temp.linux-x86_64-2.7
+creating build/temp.linux-x86_64-2.7/SWIG
+x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fdebug-prefix-map=/build/python2.7-DmWv1o/python2.7-2.7.14=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/python2.7 -I/usr/include -I/usr/include/x86_64-linux-gnu -I/tmp/pip-build-cIFksT/m2crypto/SWIG -c SWIG/_m2crypto_wrap.c -o build/temp.linux-x86_64-2.7/SWIG/_m2crypto_wrap.o -DTHREADING
+SWIG/_m2crypto_wrap.c:4186:35: error: ‘CRYPTO_NUM_LOCKS’ undeclared here (not in a function); did you mean ‘CRYPTO_UNLOCK’?
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~~~~~~~
+CRYPTO_UNLOCK
+SWIG/_m2crypto_wrap.c: In function ‘lib_init’:
+SWIG/_m2crypto_wrap.c:4567:5: warning: implicit declaration of function ‘SSLeay_add_all_algorithms’; did you mean ‘SSLeay_add_ssl_algorithms’? [-Wimplicit-function-declaration]
+SSLeay_add_all_algorithms();
+^~~~~~~~~~~~~~~~~~~~~~~~~
+SSLeay_add_ssl_algorithms
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand’:
+SWIG/_m2crypto_wrap.c:4971:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:4975:5: warning: implicit declaration of function ‘BN_init’; did you mean ‘bio_init’? [-Wimplicit-function-declaration]
+BN_init(&rnd);
+^~~~~~~
+bio_init
+SWIG/_m2crypto_wrap.c:4971:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c: In function ‘bn_rand_range’:
+SWIG/_m2crypto_wrap.c:5000:12: error: storage size of ‘rnd’ isn’t known
+BIGNUM rnd;
+^~~
+SWIG/_m2crypto_wrap.c:5000:12: warning: unused variable ‘rnd’ [-Wunused-variable]
+SWIG/_m2crypto_wrap.c: In function ‘rand_pseudo_bytes’:
+SWIG/_m2crypto_wrap.c:5131:5: warning: ‘RAND_pseudo_bytes’ is deprecated [-Wdeprecated-declarations]
+ret = RAND_pseudo_bytes(blob, n);
+^~~
+In file included from /usr/include/openssl/crypto.h:32:0,
+from /usr/include/openssl/bio.h:20,
+from /usr/include/openssl/err.h:21,
+from SWIG/_m2crypto_wrap.c:3829:
+/usr/include/openssl/rand.h:47:1: note: declared here
+DEPRECATEDIN_1_1_0(int RAND_pseudo_bytes(unsigned char *buf, int num))
+^
+SWIG/_m2crypto_wrap.c: In function ‘digest_final’:
+SWIG/_m2crypto_wrap.c:5249:34: error: dereferencing pointer to incomplete type ‘EVP_MD_CTX {aka struct evp_md_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->digest->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_new’:
+SWIG/_m2crypto_wrap.c:5266:49: error: invalid application of ‘sizeof’ to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(ctx = (HMAC_CTX *)PyMem_Malloc(sizeof(HMAC_CTX)))) {
+^~~~~~~~
+SWIG/_m2crypto_wrap.c:5270:5: warning: implicit declaration of function ‘HMAC_CTX_init’; did you mean ‘HMAC_CTX_new’? [-Wimplicit-function-declaration]
+HMAC_CTX_init(ctx);
+^~~~~~~~~~~~~
+HMAC_CTX_new
+SWIG/_m2crypto_wrap.c: In function ‘hmac_ctx_free’:
+SWIG/_m2crypto_wrap.c:5275:5: warning: implicit declaration of function ‘HMAC_CTX_cleanup’; did you mean ‘HMAC_CTX_get_md’? [-Wimplicit-function-declaration]
+HMAC_CTX_cleanup(ctx);
+^~~~~~~~~~~~~~~~
+HMAC_CTX_get_md
+SWIG/_m2crypto_wrap.c: In function ‘hmac_init’:
+SWIG/_m2crypto_wrap.c:5286:5: warning: ‘HMAC_Init’ is deprecated [-Wdeprecated-declarations]
+if (!HMAC_Init(ctx, kbuf, klen, md)) {
+^~
+In file included from /usr/include/openssl/hmac.h:13:0,
+from /usr/include/openssl/ssl.h:56,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/hmac.h:28:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur int HMAC_Init(HMAC_CTX *ctx, const void *key, int len,
+^
+SWIG/_m2crypto_wrap.c: In function ‘hmac_final’:
+SWIG/_m2crypto_wrap.c:5314:34: error: dereferencing pointer to incomplete type ‘HMAC_CTX {aka struct hmac_ctx_st}’
+if (!(blob = PyMem_Malloc(ctx->md->md_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_ctx_new’:
+SWIG/_m2crypto_wrap.c:5353:55: error: invalid application of ‘sizeof’ to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(ctx = (EVP_CIPHER_CTX *)PyMem_Malloc(sizeof(EVP_CIPHER_CTX)))) {
+^~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘cipher_final’:
+SWIG/_m2crypto_wrap.c:5434:34: error: dereferencing pointer to incomplete type ‘EVP_CIPHER_CTX {aka struct evp_cipher_ctx_st}’
+if (!(obuf = PyMem_Malloc(ctx->cipher->block_size))) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘pkey_get_modulus’:
+SWIG/_m2crypto_wrap.c:5582:17: error: dereferencing pointer to incomplete type ‘EVP_PKEY {aka struct evp_pkey_st}’
+switch (pkey->type) {
+^~
+SWIG/_m2crypto_wrap.c:5593:35: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
+if (!BN_print(bio, rsa->n)) {
+^~
+SWIG/_m2crypto_wrap.c:5618:35: error: dereferencing pointer to incomplete type ‘DSA {aka struct dsa_st}’
+if (!BN_print(bio, dsa->pub_key)) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dh_generate_parameters’:
+SWIG/_m2crypto_wrap.c:5815:5: warning: ‘DH_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dh = DH_generate_parameters(plen, g, gendh_callback, (void *)pyfunc);
+^~
+In file included from /usr/include/openssl/bn.h:31:0,
+from /usr/include/openssl/asn1.h:24,
+from /usr/include/openssl/dh.h:18,
+from SWIG/_m2crypto_wrap.c:4243:
+/usr/include/openssl/dh.h:135:1: note: declared here
+DEPRECATEDIN_0_9_8(DH *DH_generate_parameters(int prime_len, int generator,
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5861:12: error: dereferencing pointer to incomplete type ‘DH {aka struct dh_st}’
+if (!dh->p) {
+^~
+SWIG/_m2crypto_wrap.c: In function ‘rsa_generate_key’:
+SWIG/_m2crypto_wrap.c:6319:5: warning: ‘RSA_generate_key’ is deprecated [-Wdeprecated-declarations]
+rsa = RSA_generate_key(bits, e, genrsa_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/rsa.h:13:0,
+from SWIG/_m2crypto_wrap.c:4246:
+/usr/include/openssl/rsa.h:193:1: note: declared here
+DEPRECATEDIN_0_9_8(RSA *RSA_generate_key(int bits, unsigned long e, void
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6348:29: error: dereferencing pointer to incomplete type ‘DSA_SIG {aka struct DSA_SIG_st}’
+return bn_to_mpi(dsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘dsa_generate_parameters’:
+SWIG/_m2crypto_wrap.c:6378:5: warning: ‘DSA_generate_parameters’ is deprecated [-Wdeprecated-declarations]
+dsa = DSA_generate_parameters(bits, NULL, 0, NULL, NULL, genparam_callback, (void *)pyfunc);
+^~~
+In file included from /usr/include/openssl/dsa.h:28:0,
+from /usr/include/openssl/x509.h:32,
+from /usr/include/openssl/ssl.h:50,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/dsa.h:122:1: note: declared here
+DEPRECATEDIN_0_9_8(DSA *DSA_generate_parameters(int bits,
+^
+SWIG/_m2crypto_wrap.c: In function ‘sk_ssl_cipher_value’:
+SWIG/_m2crypto_wrap.c:7284:12: warning: return discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
+return sk_SSL_CIPHER_value(stack, idx);
+^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7463:43: error: dereferencing pointer to incomplete type ‘X509_NAME {aka struct X509_name_st}’
+return PyString_FromStringAndSize(name->bytes->data, name->bytes->length);
+^~
+SWIG/_m2crypto_wrap.c: At top level:
+SWIG/_m2crypto_wrap.c:7523:2: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
+x509v3_lhash() {
+^~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘x509v3_lhash’:
+SWIG/_m2crypto_wrap.c:7524:12: warning: return from incompatible pointer type [-Wincompatible-pointer-types]
+return lh_new(NULL, NULL); / Should probably be lh_CONF_VALUE_new but won't compile. */
+^~~~~~
+SWIG/_m2crypto_wrap.c: In function ‘make_stack_from_der_sequence’:
+SWIG/_m2crypto_wrap.c:7640:13: warning: implicit declaration of function ‘ASN1_seq_unpack_X509’; did you mean ‘ASN1_item_unpack’? [-Wimplicit-function-declaration]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^~~~~~~~~~~~~~~~~~~~
+ASN1_item_unpack
+SWIG/_m2crypto_wrap.c:7640:11: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+certs = ASN1_seq_unpack_X509((unsigned char *)encoded_string, encoded_string_len, d2i_X509, X509_free );
+^
+SWIG/_m2crypto_wrap.c: In function ‘get_der_encoding_stack’:
+SWIG/_m2crypto_wrap.c:7656:16: warning: implicit declaration of function ‘ASN1_seq_pack_X509’; did you mean ‘ASN1_item_pack’? [-Wimplicit-function-declaration]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^~~~~~~~~~~~~~~~~~
+ASN1_item_pack
+SWIG/_m2crypto_wrap.c:7656:14: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
+encoding = ASN1_seq_pack_X509(stack, i2d_X509, NULL, &len);
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8186:31: error: dereferencing pointer to incomplete type ‘ECDSA_SIG {aka struct ECDSA_SIG_st}’
+return bn_to_mpi(ecdsa_sig->r);
+^~
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_sslv2_method’:
+SWIG/_m2crypto_wrap.c:18315:26: warning: implicit declaration of function ‘SSLv2_method’; did you mean ‘SSLv23_method’? [-Wimplicit-function-declaration]
+result = (SSL_METHOD *)SSLv2_method();
+^~~~~~~~~~~~
+SSLv23_method
+SWIG/_m2crypto_wrap.c:18315:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (SSL_METHOD *)SSLv2_method();
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_tlsv1_method’:
+SWIG/_m2crypto_wrap.c:18341:3: warning: ‘TLSv1_method’ is deprecated [-Wdeprecated-declarations]
+result = (SSL_METHOD *)TLSv1_method();
+^~~~~~
+In file included from /usr/include/openssl/ct.h:13:0,
+from /usr/include/openssl/ssl.h:61,
+from SWIG/_m2crypto_wrap.c:4247:
+/usr/include/openssl/ssl.h:1627:1: note: declared here
+DEPRECATEDIN_1_1_0(__owur const SSL_METHOD TLSv1_method(void)) / TLSv1.0 */
+^
+SWIG/_m2crypto_wrap.c: In function ‘_wrap_c2i_asn1_object’:
+SWIG/_m2crypto_wrap.c:25775:27: warning: implicit declaration of function ‘c2i_ASN1_OBJECT’; did you mean ‘d2i_ASN1_OBJECT’? [-Wimplicit-function-declaration]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^~~~~~~~~~~~~~~
+d2i_ASN1_OBJECT
+SWIG/_m2crypto_wrap.c:25775:12: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
+result = (ASN1_OBJECT *)c2i_ASN1_OBJECT(arg1,(unsigned char const **)arg2,arg3);
+^
+SWIG/_m2crypto_wrap.c: In function ‘init__m2crypto’:
+SWIG/_m2crypto_wrap.c:31639:79: warning: implicit declaration of function ‘SWIG_From_wchar_t’; did you mean ‘SWIG_FromCharPtr’? [-Wimplicit-function-declaration]
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~~~~~~~
+SWIG_FromCharPtr
+SWIG/_m2crypto_wrap.c:31639:120: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:121: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31639:119: error: ‘L’ undeclared (first use in this function)
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31639:119: note: each undeclared identifier is reported only once for each function it appears in
+SWIG/_m2crypto_wrap.c:31640:3: error: expected ‘)’ before ‘SWIG_Python_SetConstant’
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "__WCHAR_MIN",SWIG_From_int((int)((-(0x7fffffff+L'\0') -1))));
+^~~~~~~~~~~~~~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31691:118: error: stray ‘\’ in program
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: warning: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^
+SWIG/_m2crypto_wrap.c:31691:119: error: missing terminating ' character
+SWIG_Python_SetConstant(d, d == md ? public_interface : NULL, "WCHAR_MAX",SWIG_From_wchar_t((wchar_t)((0x7fffffff+L'\0'))));
+^~~~~~~~~~~
+SWIG/_m2crypto_wrap.c:31996:1: error: expected declaration or statement at end of input
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_p’:
+SWIG/_m2crypto_wrap.c:5866:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_g’:
+SWIG/_m2crypto_wrap.c:5874:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_pub’:
+SWIG/_m2crypto_wrap.c:5882:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dh_get_priv’:
+SWIG/_m2crypto_wrap.c:5890:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_e’:
+SWIG/_m2crypto_wrap.c:5999:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_get_n’:
+SWIG/_m2crypto_wrap.c:6007:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘rsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6334:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:6349:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:6353:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_p’:
+SWIG/_m2crypto_wrap.c:6391:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_q’:
+SWIG/_m2crypto_wrap.c:6399:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_g’:
+SWIG/_m2crypto_wrap.c:6407:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_pub’:
+SWIG/_m2crypto_wrap.c:6415:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_get_priv’:
+SWIG/_m2crypto_wrap.c:6423:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_key’:
+SWIG/_m2crypto_wrap.c:6670:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_check_pub_key’:
+SWIG/_m2crypto_wrap.c:6674:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘dsa_keylen’:
+SWIG/_m2crypto_wrap.c:6678:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘x509_name_get_der’:
+SWIG/_m2crypto_wrap.c:7464:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_r’:
+SWIG/_m2crypto_wrap.c:8187:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+SWIG/_m2crypto_wrap.c: In function ‘ecdsa_sig_get_s’:
+SWIG/_m2crypto_wrap.c:8191:1: warning: control reaches end of non-void function [-Wreturn-type]
+}
+^
+At top level:
+SWIG/_m2crypto_wrap.c:4187:13: warning: ‘lock_count’ defined but not used [-Wunused-variable]
+static long lock_count[CRYPTO_NUM_LOCKS];
+^~~~~~~~~~
+SWIG/_m2crypto_wrap.c:4186:27: warning: ‘lock_cs’ defined but not used [-Wunused-variable]
+static PyThread_type_lock lock_cs[CRYPTO_NUM_LOCKS];
+^~~~~~~
+error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
+
+----------------------------------------
+
+Rolling back uninstall of M2Crypto
+
+ Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-cIFksT/m2crypto/setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record /tmp/pip-cWZrMo-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-cIFksT/m2crypto/
+``` \ No newline at end of file
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/__init__.py
diff --git a/tests/test_import_issues.py b/tests/test_import_issues.py
new file mode 100644
index 0000000..d6b2dbc
--- /dev/null
+++ b/tests/test_import_issues.py
@@ -0,0 +1,52 @@
+import os.path
+import textwrap
+import unittest
+
+from import_issues import MAX_SIZE_COMMENT, split_long_str
+
+
+class TestStringSplitting(unittest.TestCase):
+ maxDiff = None
+
+ def setUp(self):
+ __cur_dir = os.path.abspath(os.path.dirname(__file__))
+ with open(os.path.join(__cur_dir, "209_description.txt")) as inf:
+ self.long_str = inf.read()
+
+ def test_one_line(self):
+ in_str = "Testing string."
+ split_str = split_long_str(in_str, 100)
+ self.assertIsInstance(split_str, list)
+ self.assertEqual(len(split_str), 1)
+ self.assertEqual(in_str, "".join(split_str))
+
+ def test_short_str(self):
+ in_str = textwrap.dedent(
+ """\
+ Reader, I married him.
+ A quiet wedding we had: he and I, the parson and clerk, were alone present.
+ When we got back from church, I went into the kitchen of the manor-house, where Mary was cooking the dinner and John cleaning the knives, and I said—
+
+ “Mary, I have been married to Mr. Rochester this morning.”
+
+ The housekeeper and her husband were both of that decent phlegmatic order of people, to whom one may at any time safely communicate a remarkable piece of news without incurring the danger of having one’s ears pierced by some shrill ejaculation, and subsequently stunned by a torrent of wordy wonderment.
+ Mary did look up, and she did stare at me: the ladle with which she was basting a pair of chickens roasting at the fire, did for some three minutes hang suspended in air; and for the same space of time John’s knives also had rest from the polishing process: but Mary, bending again over the roast, said only—
+
+ “Have you, Miss? Well, for sure!”
+
+ """
+ )
+ split_str = split_long_str(in_str, 100)
+ self.assertIsInstance(split_str, list)
+ self.assertEqual(len(split_str), 6)
+ self.assertEqual(in_str, "".join(split_str))
+
+ def test_long_str(self):
+ split_str = split_long_str(self.long_str, MAX_SIZE_COMMENT)
+ self.assertIsInstance(split_str, list)
+ self.assertEqual(len(split_str), 4)
+ self.assertEqual(self.long_str, "".join(split_str))
+
+
+if __name__ == "__main__":
+ unittest.main()