This is tested with https://github.com/apache/thrift/pull/2927, which
published to https://test.pypi.org/project/thrift-test/. I tested
locally with:
(venv) fishy@penguin:~/work/test$ pip install -i https://test.pypi.org/simple/ thrift-test
Looking in indexes: https://test.pypi.org/simple/
Collecting thrift-test
Downloading 5885ea1406/thrift-test-0.21.0.tar.gz (62 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.3/62.3 kB 1.4 MB/s eta 0:00:00
Preparing metadata (setup.py) ... done
Collecting six>=1.7.2 (from thrift-test)
Downloading 238e259082/six-1.10.0.tar.gz (29 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: thrift-test, six
Building wheel for thrift-test (setup.py) ... done
Created wheel for thrift-test: filename=thrift_test-0.21.0-cp311-cp311-linux_x86_64.whl size=416914 sha256=3a972bc562be7ed19cb37399e444ed0d373cde5319023974080b625e550901d4
Stored in directory: /home/fishy/.cache/pip/wheels/45/20/1f/d3e1b869ac068d63ca2b2c13a2f4e33a80b360fae7091c8a9b
Building wheel for six (setup.py) ... done
Created wheel for six: filename=six-1.10.0-py2.py3-none-any.whl size=9942 sha256=74014380446ccf331366316cec0b1aaf40e0162e70307622b493e38e8451115f
Stored in directory: /home/fishy/.cache/pip/wheels/e4/18/d0/e02474c90dcf14c511c0f52145d7e72e41ff3fb80b330ba58e
Successfully built thrift-test six
Installing collected packages: six, thrift-test
Successfully installed six-1.10.0 thrift-test-0.21.0
(venv) fishy@penguin:~/work/test$ python3
Python 3.11.7 (main, Dec 8 2023, 14:22:46) [GCC 13.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from thrift.transport import TSocket
>>> transport = TSocket.TSocket('localhost', 9090)
>>> transport
<thrift.transport.TSocket.TSocket object at 0x785b18d83690>
>>> transport.open()
Could not connect to any of [('::1', 9090, 0, 0), ('127.0.0.1', 9090)]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/fishy/work/test/venv/lib/python3.11/site-packages/thrift/transport/TSocket.py", line 149, in open
raise TTransportException(type=TTransportException.NOT_OPEN, message=msg)
thrift.transport.TTransport.TTransportException: Could not connect to any of [('::1', 9090, 0, 0), ('127.0.0.1', 9090)]
>>> from thrift.protocol import fastbinary
>>> fastbinary
<module 'thrift.protocol.fastbinary' from '/home/fishy/work/test/venv/lib/python3.11/site-packages/thrift/protocol/fastbinary.cpython-311-x86_64-linux-gnu.so'>
>>> fastbinary.decode_compact
<built-in function decode_compact>
>>>
If we want to merge this version, I'll enable pending publishing with
`pypi.yml` from this repo on pypi [1].
[1]: https://pypi.org/manage/account/publishing/
With --disable-tests, for example for Go the `make check` under `lib/go`
would only run unit tests under `lib/go/thrift` but not the unit tests
under `lib/go/test`.
Also some changes in lib/go/test/fuzz/Makefile.am so it works in both go
1.20 and 1.21 (The current state breaks in 1.21 but because of
`--disable-tests` we never noticed that).
Although we haven't removed py2 support yet, it's no longer available in
github actions so it's been consistently failing in recent github action
runs.
Also add `fail-fast: false` to all matrices in github actions.
Client: go
The go library itself does not have any third-party dependencies. We
have one third party dependency from the test code, which kind of
polluted from top-level go.mod file to the users of thrift go library.
We previous tried to clean that up by creating go.mod file at
lib/go/thrift, which caused issues to the release process and thus
reverted.
Use multi-module to separate tests requiring mock to their own modules
so that we can keep the top-level go.mod file clean.
Also some minor fixes on the github actions go workflow.
Client: go
This is only the library part of THRIFT-5650. I still have some open
questions for the compiler part so that will be done later.
While I'm here, also made some changes to go CI process:
* Update ubuntu-bionic to use go 1.18 for travis
* Update ubuntu-jammy to use the latest go 1.19.x for travis
* Run both go 1.18 and 1.19 for github actions
* Also run test/go tests for github actions
* upgrade gradle version to 7.4
* migrate from `maven` plugin to `maven-publish` plugin as required for Gradle 7
* add guard to ktfmt, since it can't run with JDK 8
Co-authored-by: Christopher Tubbs <ctubbsii@apache.org>
* use spotless plugin and google-java-format to enforce a consistent code format
* add a step of spotless check before building
* only run spotless on the src/ directory
Co-authored-by: Christopher Tubbs <ctubbsii@apache.org>
* add java build workflow
* add kotlin as well
* run full make with ant and maven
* shorten names
Co-authored-by: Christopher Tubbs <ctubbsii@apache.org>