Skip to content

Commit 8b26bd1

Browse files
authored
Merge branch 'main' into fix-outdated-pkg-resources-usage
2 parents a0bfee2 + 4a9dd5d commit 8b26bd1

File tree

13 files changed

+185
-232
lines changed

13 files changed

+185
-232
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,12 @@ jobs:
4949
steps:
5050
- uses: actions/checkout@v5
5151
- name: Set up Python ${{ matrix.python-version }}
52-
uses: actions/setup-python@v5
52+
uses: actions/setup-python@v6
5353
with:
5454
python-version: ${{ matrix.python-version }}
5555
cache: 'pip'
5656
- name: Set up Node.js 16
57-
uses: actions/setup-node@v4
57+
uses: actions/setup-node@v5
5858
with:
5959
node-version: 16
6060
- name: Install dependencies

.github/workflows/lemur-publish-release-pypi.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ jobs:
1414
steps:
1515
- uses: actions/checkout@v5
1616
- name: Set up Python
17-
uses: actions/setup-python@v5
17+
uses: actions/setup-python@v6
1818
with:
1919
python-version: '3.x'
2020
- name: Autobump version

.readthedocs.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,13 @@ build:
2020
python: "3.11"
2121
jobs:
2222
pre_install:
23+
- grep -v "python-ldap" requirements.txt > tempreqs && mv tempreqs requirements.txt
2324
- grep -v "python-ldap" requirements-docs.txt > tempreqs && mv tempreqs requirements-docs.txt
2425

2526

2627
python:
2728
install:
28-
- requirements: requirements-docs.txt
29-
- method: setuptools
29+
- method: pip
3030
path: .
31+
extra_requirements:
32+
- docs

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
include setup.py version.py package.json bower.json gulpfile.js README.rst MANIFEST.in LICENSE AUTHORS requirements*.txt
1+
include pyproject.toml package.json bower.json gulpfile.js README.rst MANIFEST.in LICENSE AUTHORS requirements*.txt
22
recursive-include lemur/plugins/lemur_email/templates *
33
recursive-include lemur/static *
44
global-exclude *~

build_backend.py

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""
2+
Custom build backend for Lemur that handles static asset building.
3+
This replaces the custom commands from the old setup.py.
4+
"""
5+
import os
6+
import subprocess
7+
import logging
8+
from setuptools import build_meta as _orig
9+
from setuptools.build_meta import *
10+
11+
12+
def build_wheel(wheel_directory, config_settings=None, metadata_directory=None):
13+
"""Build wheel with static assets."""
14+
_build_static()
15+
return _orig.build_wheel(wheel_directory, config_settings, metadata_directory)
16+
17+
18+
def build_sdist(sdist_directory, config_settings=None):
19+
"""Build source distribution with static assets."""
20+
_build_static()
21+
return _orig.build_sdist(sdist_directory, config_settings)
22+
23+
24+
def _build_static():
25+
"""Build static assets using npm and gulp."""
26+
root = os.path.dirname(os.path.abspath(__file__))
27+
28+
# Check if static assets already exist
29+
if os.path.exists(os.path.join(root, 'lemur/static/dist')):
30+
logging.info("Static assets already exist, skipping build")
31+
return
32+
33+
logging.info(f"Building static assets in {root}")
34+
35+
try:
36+
# Run npm install
37+
logging.info("Running npm install --quiet")
38+
subprocess.check_call(['npm', 'install', '--quiet'], cwd=root)
39+
40+
# Run gulp build
41+
logging.info("Running gulp build")
42+
subprocess.check_call([
43+
os.path.join(root, 'node_modules', '.bin', 'gulp'), 'build'
44+
], cwd=root)
45+
46+
# Run gulp package
47+
logging.info("Running gulp package")
48+
subprocess.check_call([
49+
os.path.join(root, 'node_modules', '.bin', 'gulp'), 'package'
50+
], cwd=root)
51+
52+
except subprocess.CalledProcessError as e:
53+
logging.warning(f"Unable to build static content: {e}")
54+
except Exception as e:
55+
logging.warning(f"Unexpected error building static content: {e}")

gulp/build.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use strict';
22

33
var gulp = require('gulp'),
4-
minifycss = require('gulp-minify-css'),
4+
cleanCSS = require('gulp-clean-css'),
55
concat = require('gulp-concat'),
66
less = require('gulp-less'),
77
gulpif = require('gulp-if'),
@@ -127,7 +127,7 @@ gulp.task('dev:styles', function () {
127127
})))
128128
.pipe(plumber())
129129
.pipe(concat('styles.css'))
130-
.pipe(minifycss())
130+
.pipe(cleanCSS())
131131
.pipe(autoprefixer('last 1 version'))
132132
.pipe(gulp.dest('.tmp/styles'))
133133
.pipe(size());

lemur/static/app/images/.bogus

Whitespace-only changes.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,8 @@
6060
"test": "gulp test"
6161
},
6262
"devDependencies": {
63-
"gulp": "^4.0.2",
63+
"gulp": "^5.0.1",
64+
"gulp-clean-css": "^4.3.0",
6465
"gulp-util": "^3.0.8",
6566
"jshint": "^2.11.0",
6667
"karma-chrome-launcher": "^3.1.0"

pyproject.toml

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
[build-system]
2+
requires = ["setuptools>=64", "wheel"]
3+
build-backend = "setuptools.build_meta"
4+
5+
[project]
6+
name = "lemur"
7+
dynamic = ["version", "readme", "dependencies", "optional-dependencies"]
8+
description = "Certificate management and orchestration service"
9+
authors = [
10+
{name = "The Lemur developers", email = "[email protected]"}
11+
]
12+
license = {text = "Apache License, Version 2.0"}
13+
classifiers = [
14+
"Framework :: Flask",
15+
"Intended Audience :: Developers",
16+
"Intended Audience :: System Administrators",
17+
"Operating System :: OS Independent",
18+
"Topic :: Software Development",
19+
"Programming Language :: Python :: 3.10",
20+
"Programming Language :: Python :: 3.11",
21+
"Programming Language :: Python :: 3.12",
22+
"Programming Language :: Python :: 3.13",
23+
"Natural Language :: English",
24+
"License :: OSI Approved :: Apache Software License"
25+
]
26+
requires-python = ">=3.10"
27+
28+
29+
[project.urls]
30+
homepage = "https://github.com/Netflix/lemur"
31+
repository = "https://github.com/Netflix/lemur"
32+
33+
[project.scripts]
34+
lemur = "lemur.manage:main"
35+
36+
[project.entry-points."lemur.plugins"]
37+
verisign_issuer = "lemur.plugins.lemur_verisign.plugin:VerisignIssuerPlugin"
38+
acme_issuer = "lemur.plugins.lemur_acme.plugin:ACMEIssuerPlugin"
39+
acme_http_issuer = "lemur.plugins.lemur_acme.plugin:ACMEHttpIssuerPlugin"
40+
aws_destination = "lemur.plugins.lemur_aws.plugin:AWSDestinationPlugin"
41+
aws_acm_destination = "lemur.plugins.lemur_aws.plugin:ACMDestinationPlugin"
42+
aws_source = "lemur.plugins.lemur_aws.plugin:AWSSourcePlugin"
43+
aws_acm_source = "lemur.plugins.lemur_aws.plugin:AWSACMSourcePlugin"
44+
aws_s3 = "lemur.plugins.lemur_aws.plugin:S3DestinationPlugin"
45+
aws_sns = "lemur.plugins.lemur_aws.plugin:SNSNotificationPlugin"
46+
email_notification = "lemur.plugins.lemur_email.plugin:EmailNotificationPlugin"
47+
slack_notification = "lemur.plugins.lemur_slack.plugin:SlackNotificationPlugin"
48+
java_truststore_export = "lemur.plugins.lemur_jks.plugin:JavaTruststoreExportPlugin"
49+
java_keystore_export = "lemur.plugins.lemur_jks.plugin:JavaKeystoreExportPlugin"
50+
openssl_export = "lemur.plugins.lemur_openssl.plugin:OpenSSLExportPlugin"
51+
atlas_metric = "lemur.plugins.lemur_atlas.plugin:AtlasMetricPlugin"
52+
atlas_metric_redis = "lemur.plugins.lemur_atlas_redis.plugin:AtlasMetricRedisPlugin"
53+
kubernetes_destination = "lemur.plugins.lemur_kubernetes.plugin:KubernetesDestinationPlugin"
54+
cryptography_issuer = "lemur.plugins.lemur_cryptography.plugin:CryptographyIssuerPlugin"
55+
cfssl_issuer = "lemur.plugins.lemur_cfssl.plugin:CfsslIssuerPlugin"
56+
digicert_issuer = "lemur.plugins.lemur_digicert.plugin:DigiCertIssuerPlugin"
57+
digicert_source = "lemur.plugins.lemur_digicert.plugin:DigiCertSourcePlugin"
58+
digicert_cis_issuer = "lemur.plugins.lemur_digicert.plugin:DigiCertCISIssuerPlugin"
59+
digicert_cis_source = "lemur.plugins.lemur_digicert.plugin:DigiCertCISSourcePlugin"
60+
csr_export = "lemur.plugins.lemur_csr.plugin:CSRExportPlugin"
61+
sftp_destination = "lemur.plugins.lemur_sftp.plugin:SFTPDestinationPlugin"
62+
vault_source = "lemur.plugins.lemur_vault_dest.plugin:VaultSourcePlugin"
63+
vault_desination = "lemur.plugins.lemur_vault_dest.plugin:VaultDestinationPlugin"
64+
adcs_issuer = "lemur.plugins.lemur_adcs.plugin:ADCSIssuerPlugin"
65+
adcs_source = "lemur.plugins.lemur_adcs.plugin:ADCSSourcePlugin"
66+
entrust_issuer = "lemur.plugins.lemur_entrust.plugin:EntrustIssuerPlugin"
67+
entrust_source = "lemur.plugins.lemur_entrust.plugin:EntrustSourcePlugin"
68+
azure_destination = "lemur.plugins.lemur_azure_dest.plugin:AzureDestinationPlugin"
69+
google_ca_issuer = "lemur.plugins.lemur_google_ca.plugin:GoogleCaIssuerPlugin"
70+
71+
[tool.setuptools]
72+
include-package-data = true
73+
zip-safe = false
74+
75+
[tool.setuptools.packages.find]
76+
where = ["."]
77+
include = ["lemur*"]
78+
79+
[tool.setuptools.dynamic]
80+
version = {attr = "lemur.__about__.__version__"}
81+
readme = {file = "README.rst"}
82+
dependencies = {file = ["requirements.txt"]}
83+
optional-dependencies.tests = {file = ["requirements-tests.txt"]}
84+
optional-dependencies.docs = {file = ["requirements-docs.txt"]}
85+
optional-dependencies.dev = {file = ["requirements-dev.txt"]}
86+
87+
[tool.pytest]
88+
python_files = "test*.py"
89+
addopts = "--tb=native -p no:doctest"
90+
norecursedirs = "bin dist docs htmlcov script hooks node_modules .* {args}"
91+
92+
[tool.flake8]
93+
ignore = ["F999", "E501", "E128", "E124", "E402", "W503", "E731", "F841", "F405"]
94+
max-line-length = 100
95+
exclude = [".tox", ".git", "*/migrations/*", "lemur/static/*", "docs/*"]
96+
97+
[tool.wheel]
98+
universal = true

requirements-dev.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Run `make up-reqs` to update pinned dependencies in requirement text files
22

33
flake8
4+
Flake8-pyproject
45
pre-commit
56
invoke
67
twine

0 commit comments

Comments
 (0)