diff --git a/README.md b/README.md
index f354b96..29eb978 100644
--- a/README.md
+++ b/README.md
@@ -156,6 +156,9 @@ all languages.
## Release Notes
+### Release 3.1.3.post2 (July 9, 2026)
+* Bump fasterxml-jackson.version from 2.18.6 to 2.18.8
+
### Release 3.1.3.post2 (June 22, 2026)
* Bump netty.version from 4.2.13.Final to 4.2.15.Final
diff --git a/pom.xml b/pom.xml
index 79ece7a..3d884ed 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
3.1.3
4.2.15.Final
2.0.6
- 2.18.6
+ 2.18.8
1.3.16
diff --git a/setup.py b/setup.py
index a7260b1..4a08373 100644
--- a/setup.py
+++ b/setup.py
@@ -40,31 +40,36 @@
# to rerun the install command.
#
-PACKAGE_NAME = 'amazon_kclpy'
-JAR_DIRECTORY = os.path.join(PACKAGE_NAME, 'jars')
-PACKAGE_VERSION = '3.1.3.post2'
+PACKAGE_NAME = "amazon_kclpy"
+JAR_DIRECTORY = os.path.join(PACKAGE_NAME, "jars")
+PACKAGE_VERSION = "3.1.3.post3"
PYTHON_REQUIREMENTS = [
"boto3",
# argparse is part of python3.2+
- "argparse; python_version <= '3.1'" ,
+ "argparse; python_version <= '3.1'",
]
-REMOTE_MAVEN_PACKAGES_FILE = 'pom.xml'
+REMOTE_MAVEN_PACKAGES_FILE = "pom.xml"
-class MavenJarDownloader:
- def __init__(self, on_completion, destdir=JAR_DIRECTORY, packages_file=REMOTE_MAVEN_PACKAGES_FILE):
+class MavenJarDownloader:
+ def __init__(
+ self,
+ on_completion,
+ destdir=JAR_DIRECTORY,
+ packages_file=REMOTE_MAVEN_PACKAGES_FILE,
+ ):
self.on_completion = on_completion
self.destdir = destdir
self.packages_file = packages_file
self.packages = self.parse_packages_from_pom()
def warning_string(self, missing_jars=[]):
- s = '''The following jars were not installed because they were not
-present in this package at the time of installation:'''
+ s = """The following jars were not installed because they were not
+present in this package at the time of installation:"""
for jar in missing_jars:
- s += '\n {jar}'.format(jar=jar)
- s += '''
+ s += "\n {jar}".format(jar=jar)
+ s += """
This doesn't affect the rest of the installation, but may make it more
difficult for you to run the sample app and get started.
@@ -74,20 +79,23 @@ def warning_string(self, missing_jars=[]):
python setup.py install
Which will download the required jars and rerun the install.
-'''
+"""
return s
def parse_packages_from_pom(self):
maven_root = ET.parse(self.packages_file).getroot()
- maven_version = '{http://maven.apache.org/POM/4.0.0}'
+ maven_version = "{http://maven.apache.org/POM/4.0.0}"
# dictionary of common package versions encoded in `properties` section
- properties = {f"${{{child.tag.replace(maven_version, '')}}}": child.text
- for child in maven_root.find(f'{maven_version}properties').iter() if 'version' in child.tag}
+ properties = {
+ f"${{{child.tag.replace(maven_version, '')}}}": child.text
+ for child in maven_root.find(f"{maven_version}properties").iter()
+ if "version" in child.tag
+ }
packages = []
- for dep in maven_root.iter(f'{maven_version}dependency'):
+ for dep in maven_root.iter(f"{maven_version}dependency"):
dependency = []
- for attr in ['groupId', 'artifactId', 'version']:
+ for attr in ["groupId", "artifactId", "version"]:
val = dep.find(maven_version + attr).text
if val in properties:
dependency.append(properties[val])
@@ -105,11 +113,16 @@ def download_and_check(self):
raise RuntimeError(self.warning_string(missing_jars))
def package_destination(self, artifact_id, version):
- return '{artifact_id}-{version}.jar'.format(artifact_id=artifact_id, version=version)
+ return "{artifact_id}-{version}.jar".format(
+ artifact_id=artifact_id, version=version
+ )
def missing_jars(self):
- file_list = [os.path.join(self.destdir, self.package_destination(p[1], p[2])) for p in self.packages]
- return [f for f in file_list if not os.path.isfile(f)] # The missing files
+ file_list = [
+ os.path.join(self.destdir, self.package_destination(p[1], p[2]))
+ for p in self.packages
+ ]
+ return [f for f in file_list if not os.path.isfile(f)] # The missing files
def package_url(self, group_id, artifact_id, version):
#
@@ -117,33 +130,36 @@ def package_url(self, group_id, artifact_id, version):
# https://search.maven.org/remotecontent?filepath=org/apache/httpcomponents/httpclient/4.2/httpclient-4.2.jar
# https://repo1.maven.org/maven2/org/apache/httpcomponents/httpclient/4.2/httpclient-4.2.jar
#
- prefix = os.getenv("KCL_MVN_REPO_SEARCH_URL", 'https://repo1.maven.org/maven2/')
- return '{prefix}{path}/{artifact_id}/{version}/{dest}'.format(
- prefix=prefix,
- path='/'.join(group_id.split('.')),
- artifact_id=artifact_id,
- version=version,
- dest=self.package_destination(artifact_id, version))
+ prefix = os.getenv("KCL_MVN_REPO_SEARCH_URL", "https://repo1.maven.org/maven2/")
+ return "{prefix}{path}/{artifact_id}/{version}/{dest}".format(
+ prefix=prefix,
+ path="/".join(group_id.split(".")),
+ artifact_id=artifact_id,
+ version=version,
+ dest=self.package_destination(artifact_id, version),
+ )
def download_file(self, url, dest):
"""
Downloads a file at the url to the destination.
"""
- print('Attempting to retrieve remote jar {url}'.format(url=url))
+ print("Attempting to retrieve remote jar {url}".format(url=url))
try:
response = urlopen(url)
- with open(dest, 'wb') as dest_file:
+ with open(dest, "wb") as dest_file:
shutil.copyfileobj(response, dest_file)
- print('Saving {url} -> {dest}'.format(url=url, dest=dest))
+ print("Saving {url} -> {dest}".format(url=url, dest=dest))
except Exception as e:
- print('Failed to retrieve {url}: {e}'.format(url=url, e=e))
+ print("Failed to retrieve {url}: {e}".format(url=url, e=e))
return
def download_files(self):
for package in self.packages:
- dest = os.path.join(self.destdir, self.package_destination(package[1], package[2]))
+ dest = os.path.join(
+ self.destdir, self.package_destination(package[1], package[2])
+ )
if os.path.isfile(dest):
- print('Skipping download of {dest}'.format(dest=dest))
+ print("Skipping download of {dest}".format(dest=dest))
else:
url = self.package_url(package[0], package[1], package[2])
self.download_file(url, dest)
@@ -163,19 +179,18 @@ def run(self):
"""
Runs when this command is given to setup.py
"""
- downloader = MavenJarDownloader(on_completion=lambda : None)
+ downloader = MavenJarDownloader(on_completion=lambda: None)
downloader.download_files()
- print('''
+ print("""
Now you should run:
python setup.py install
Which will finish the installation.
-''')
+""")
class InstallThenCheckForJars(install):
-
def do_install(self):
install.run(self)
@@ -193,7 +208,6 @@ def run(self):
try:
from wheel.bdist_wheel import bdist_wheel
-
class BdistWheelWithJars(bdist_wheel):
"""
This overrides the bdist_wheel command, that handles building a binary wheel of the package.
@@ -212,10 +226,10 @@ def run(self):
except ImportError:
pass
-if __name__ == '__main__':
+if __name__ == "__main__":
commands = {
- 'download_jars': DownloadJarsCommand,
- 'install': InstallThenCheckForJars,
+ "download_jars": DownloadJarsCommand,
+ "install": InstallThenCheckForJars,
}
try:
#
@@ -224,21 +238,21 @@ def run(self):
# It's important to note this is a hack. There doesn't appear to be a way to execute hooks around wheel
# creation by design. See https://github.com/pypa/packaging-problems/issues/64 for more information.
#
- commands['bdist_wheel'] = BdistWheelWithJars
+ commands["bdist_wheel"] = BdistWheelWithJars
except NameError:
pass
setup(
name="kclpy-ext",
version=PACKAGE_VERSION,
- description='A python interface for the Amazon Kinesis Client Library MultiLangDaemon - ext',
- license='Apache-2.0',
- packages=[PACKAGE_NAME, PACKAGE_NAME + "/v2", PACKAGE_NAME + "/v3", 'samples'],
- scripts=glob.glob('samples/*py'),
+ description="A python interface for the Amazon Kinesis Client Library MultiLangDaemon - ext",
+ license="Apache-2.0",
+ packages=[PACKAGE_NAME, PACKAGE_NAME + "/v2", PACKAGE_NAME + "/v3", "samples"],
+ scripts=glob.glob("samples/*py"),
package_data={
- '': ['*.txt', '*.md'],
- PACKAGE_NAME: ['jars/*'],
- 'samples': ['sample.properties'],
+ "": ["*.txt", "*.md"],
+ PACKAGE_NAME: ["jars/*"],
+ "samples": ["sample.properties"],
},
install_requires=PYTHON_REQUIREMENTS,
setup_requires=["pytest-runner"],
@@ -247,4 +261,4 @@ def run(self):
url="https://github.com/localstack/amazon-kinesis-client-python",
keywords="amazon kinesis client library python",
zip_safe=False,
- )
+ )