UNPKG

@aws/pdk

Version:

All documentation is located at: https://aws.github.io/aws-pdk

58 lines 9.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GeneratedPythonRuntimeBaseProject = void 0; /*! Copyright [Amazon.com](http://amazon.com/), Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ const python_1 = require("projen/lib/python"); const type_safe_api_command_environment_1 = require("../components/type-safe-api-command-environment"); const utils_1 = require("../components/utils"); /** * Python project containing types generated using OpenAPI Generator CLI */ class GeneratedPythonRuntimeBaseProject extends python_1.PythonProject { constructor(options) { super({ ...options, sample: false, pytest: false, poetry: true, poetryOptions: { packages: [{ include: options.moduleName }], // Module must be explicitly added to include since poetry excludes everything in .gitignore by default include: [options.moduleName, `${options.moduleName}/**/*.py`], }, }); this.buildGenerateCommandArgs = () => { return (0, utils_1.buildCodegenCommandArgs)(this.buildCodegenOptions()); }; type_safe_api_command_environment_1.TypeSafeApiCommandEnvironment.ensure(this); this.options = options; // Add dependencies required by the client [ "python-dateutil@~2.8.2", "pydantic@^2.5.2", "aenum@^3.1.11", "urllib3@~1.26.7", `aws-lambda-powertools@{extras=["tracer", "aws-sdk"],version="^2.28.0"}`, "python@^3.9", ].forEach((dep) => this.addDependency(dep)); const generateTask = this.addTask("generate"); generateTask.exec((0, utils_1.buildTypeSafeApiExecCommand)(utils_1.TypeSafeApiScript.GENERATE, this.buildGenerateCommandArgs())); this.preCompileTask.spawn(generateTask); if (!this.options.commitGeneratedCode) { // Ignore all the generated code this.gitignore.addPatterns(this.moduleName, "docs", "README.md"); } this.gitignore.addPatterns(".openapi-generator", ".tsapi-manifest"); // The poetry install that runs as part of post synthesis expects there to be some code present, but code isn't // generated until build time. This means that the first install will fail when either generating the project for // the first time or checking out a fresh copy (since generated code is not checked in to version control). We // therefore add a blank __init__.py and README.md as our first install step to keep poetry happy until the // generator overwrites it. ["install", "install:ci"].forEach((t) => this.tasks .tryFind(t) ?.prependExec(`mkdir -p ${this.moduleName} && touch ${this.moduleName}/__init__.py README.md`)); } } exports.GeneratedPythonRuntimeBaseProject = GeneratedPythonRuntimeBaseProject; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVkLXB5dGhvbi1ydW50aW1lLWJhc2UtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImdlbmVyYXRlZC1weXRob24tcnVudGltZS1iYXNlLXByb2plY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7c0NBQ3NDO0FBQ3RDLDhDQUFrRDtBQUtsRCx1R0FBZ0c7QUFDaEcsK0NBSzZCO0FBUzdCOztHQUVHO0FBQ0gsTUFBc0IsaUNBQWtDLFNBQVEsc0JBQWE7SUFNM0UsWUFBWSxPQUFpRDtRQUMzRCxLQUFLLENBQUM7WUFDSixHQUFJLE9BQWU7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixNQUFNLEVBQUUsS0FBSztZQUNiLE1BQU0sRUFBRSxJQUFJO1lBQ1osYUFBYSxFQUFFO2dCQUNiLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDM0MsdUdBQXVHO2dCQUN2RyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEdBQUcsT0FBTyxDQUFDLFVBQVUsVUFBVSxDQUFDO2FBQy9EO1NBQ0YsQ0FBQyxDQUFDO1FBNENFLDZCQUF3QixHQUFHLEdBQUcsRUFBRTtZQUNyQyxPQUFPLElBQUEsK0JBQXVCLEVBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztRQUM3RCxDQUFDLENBQUM7UUE3Q0EsaUVBQTZCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLDBDQUEwQztRQUMxQztZQUNFLHdCQUF3QjtZQUN4QixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGlCQUFpQjtZQUNqQix3RUFBd0U7WUFDeEUsYUFBYTtTQUNkLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxZQUFZLENBQUMsSUFBSSxDQUNmLElBQUEsbUNBQTJCLEVBQ3pCLHlCQUFpQixDQUFDLFFBQVEsRUFDMUIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQ2hDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXhDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdEMsZ0NBQWdDO1lBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXBFLCtHQUErRztRQUMvRyxpSEFBaUg7UUFDakgsOEdBQThHO1FBQzlHLDJHQUEyRztRQUMzRywyQkFBMkI7UUFDM0IsQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdEMsSUFBSSxDQUFDLEtBQUs7YUFDUCxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ1gsRUFBRSxXQUFXLENBQ1gsWUFBWSxJQUFJLENBQUMsVUFBVSxhQUFhLElBQUksQ0FBQyxVQUFVLHdCQUF3QixDQUNoRixDQUNKLENBQUM7SUFDSixDQUFDO0NBT0Y7QUFsRUQsOEVBa0VDIiwic291cmNlc0NvbnRlbnQiOlsiLyohIENvcHlyaWdodCBbQW1hem9uLmNvbV0oaHR0cDovL2FtYXpvbi5jb20vKSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wICovXG5pbXBvcnQgeyBQeXRob25Qcm9qZWN0IH0gZnJvbSBcInByb2plbi9saWIvcHl0aG9uXCI7XG5pbXBvcnQge1xuICBDb2RlR2VuZXJhdGlvblNvdXJjZU9wdGlvbnMsXG4gIEdlbmVyYXRlZFB5dGhvblJ1bnRpbWVPcHRpb25zLFxufSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IFR5cGVTYWZlQXBpQ29tbWFuZEVudmlyb25tZW50IH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvdHlwZS1zYWZlLWFwaS1jb21tYW5kLWVudmlyb25tZW50XCI7XG5pbXBvcnQge1xuICBidWlsZENvZGVnZW5Db21tYW5kQXJncyxcbiAgYnVpbGRUeXBlU2FmZUFwaUV4ZWNDb21tYW5kLFxuICBDb2RlZ2VuT3B0aW9ucyxcbiAgVHlwZVNhZmVBcGlTY3JpcHQsXG59IGZyb20gXCIuLi9jb21wb25lbnRzL3V0aWxzXCI7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIGdlbmVyYXRlZCBweXRob24gdHlwZXMgcHJvamVjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlZFB5dGhvblJ1bnRpbWVCYXNlUHJvamVjdE9wdGlvbnNcbiAgZXh0ZW5kcyBHZW5lcmF0ZWRQeXRob25SdW50aW1lT3B0aW9ucyxcbiAgICBDb2RlR2VuZXJhdGlvblNvdXJjZU9wdGlvbnMge31cblxuLyoqXG4gKiBQeXRob24gcHJvamVjdCBjb250YWluaW5nIHR5cGVzIGdlbmVyYXRlZCB1c2luZyBPcGVuQVBJIEdlbmVyYXRvciBDTElcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdlbmVyYXRlZFB5dGhvblJ1bnRpbWVCYXNlUHJvamVjdCBleHRlbmRzIFB5dGhvblByb2plY3Qge1xuICAvKipcbiAgICogT3B0aW9ucyBjb25maWd1cmVkIGZvciB0aGUgcHJvamVjdFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IG9wdGlvbnM6IEdlbmVyYXRlZFB5dGhvblJ1bnRpbWVCYXNlUHJvamVjdE9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogR2VuZXJhdGVkUHl0aG9uUnVudGltZUJhc2VQcm9qZWN0T3B0aW9ucykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLihvcHRpb25zIGFzIGFueSksXG4gICAgICBzYW1wbGU6IGZhbHNlLFxuICAgICAgcHl0ZXN0OiBmYWxzZSxcbiAgICAgIHBvZXRyeTogdHJ1ZSxcbiAgICAgIHBvZXRyeU9wdGlvbnM6IHtcbiAgICAgICAgcGFja2FnZXM6IFt7IGluY2x1ZGU6IG9wdGlvbnMubW9kdWxlTmFtZSB9XSxcbiAgICAgICAgLy8gTW9kdWxlIG11c3QgYmUgZXhwbGljaXRseSBhZGRlZCB0byBpbmNsdWRlIHNpbmNlIHBvZXRyeSBleGNsdWRlcyBldmVyeXRoaW5nIGluIC5naXRpZ25vcmUgYnkgZGVmYXVsdFxuICAgICAgICBpbmNsdWRlOiBbb3B0aW9ucy5tb2R1bGVOYW1lLCBgJHtvcHRpb25zLm1vZHVsZU5hbWV9LyoqLyoucHlgXSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgVHlwZVNhZmVBcGlDb21tYW5kRW52aXJvbm1lbnQuZW5zdXJlKHRoaXMpO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICAvLyBBZGQgZGVwZW5kZW5jaWVzIHJlcXVpcmVkIGJ5IHRoZSBjbGllbnRcbiAgICBbXG4gICAgICBcInB5dGhvbi1kYXRldXRpbEB+Mi44LjJcIixcbiAgICAgIFwicHlkYW50aWNAXjIuNS4yXCIsXG4gICAgICBcImFlbnVtQF4zLjEuMTFcIixcbiAgICAgIFwidXJsbGliM0B+MS4yNi43XCIsXG4gICAgICBgYXdzLWxhbWJkYS1wb3dlcnRvb2xzQHtleHRyYXM9W1widHJhY2VyXCIsIFwiYXdzLXNka1wiXSx2ZXJzaW9uPVwiXjIuMjguMFwifWAsXG4gICAgICBcInB5dGhvbkBeMy45XCIsXG4gICAgXS5mb3JFYWNoKChkZXApID0+IHRoaXMuYWRkRGVwZW5kZW5jeShkZXApKTtcblxuICAgIGNvbnN0IGdlbmVyYXRlVGFzayA9IHRoaXMuYWRkVGFzayhcImdlbmVyYXRlXCIpO1xuICAgIGdlbmVyYXRlVGFzay5leGVjKFxuICAgICAgYnVpbGRUeXBlU2FmZUFwaUV4ZWNDb21tYW5kKFxuICAgICAgICBUeXBlU2FmZUFwaVNjcmlwdC5HRU5FUkFURSxcbiAgICAgICAgdGhpcy5idWlsZEdlbmVyYXRlQ29tbWFuZEFyZ3MoKVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnByZUNvbXBpbGVUYXNrLnNwYXduKGdlbmVyYXRlVGFzayk7XG5cbiAgICBpZiAoIXRoaXMub3B0aW9ucy5jb21taXRHZW5lcmF0ZWRDb2RlKSB7XG4gICAgICAvLyBJZ25vcmUgYWxsIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICAgdGhpcy5naXRpZ25vcmUuYWRkUGF0dGVybnModGhpcy5tb2R1bGVOYW1lLCBcImRvY3NcIiwgXCJSRUFETUUubWRcIik7XG4gICAgfVxuICAgIHRoaXMuZ2l0aWdub3JlLmFkZFBhdHRlcm5zKFwiLm9wZW5hcGktZ2VuZXJhdG9yXCIsIFwiLnRzYXBpLW1hbmlmZXN0XCIpO1xuXG4gICAgLy8gVGhlIHBvZXRyeSBpbnN0YWxsIHRoYXQgcnVucyBhcyBwYXJ0IG9mIHBvc3Qgc3ludGhlc2lzIGV4cGVjdHMgdGhlcmUgdG8gYmUgc29tZSBjb2RlIHByZXNlbnQsIGJ1dCBjb2RlIGlzbid0XG4gICAgLy8gZ2VuZXJhdGVkIHVudGlsIGJ1aWxkIHRpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZmlyc3QgaW5zdGFsbCB3aWxsIGZhaWwgd2hlbiBlaXRoZXIgZ2VuZXJhdGluZyB0aGUgcHJvamVjdCBmb3JcbiAgICAvLyB0aGUgZmlyc3QgdGltZSBvciBjaGVja2luZyBvdXQgYSBmcmVzaCBjb3B5IChzaW5jZSBnZW5lcmF0ZWQgY29kZSBpcyBub3QgY2hlY2tlZCBpbiB0byB2ZXJzaW9uIGNvbnRyb2wpLiBXZVxuICAgIC8vIHRoZXJlZm9yZSBhZGQgYSBibGFuayBfX2luaXRfXy5weSBhbmQgUkVBRE1FLm1kIGFzIG91ciBmaXJzdCBpbnN0YWxsIHN0ZXAgdG8ga2VlcCBwb2V0cnkgaGFwcHkgdW50aWwgdGhlXG4gICAgLy8gZ2VuZXJhdG9yIG92ZXJ3cml0ZXMgaXQuXG4gICAgW1wiaW5zdGFsbFwiLCBcImluc3RhbGw6Y2lcIl0uZm9yRWFjaCgodCkgPT5cbiAgICAgIHRoaXMudGFza3NcbiAgICAgICAgLnRyeUZpbmQodClcbiAgICAgICAgPy5wcmVwZW5kRXhlYyhcbiAgICAgICAgICBgbWtkaXIgLXAgJHt0aGlzLm1vZHVsZU5hbWV9ICYmIHRvdWNoICR7dGhpcy5tb2R1bGVOYW1lfS9fX2luaXRfXy5weSBSRUFETUUubWRgXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGJ1aWxkR2VuZXJhdGVDb21tYW5kQXJncyA9ICgpID0+IHtcbiAgICByZXR1cm4gYnVpbGRDb2RlZ2VuQ29tbWFuZEFyZ3ModGhpcy5idWlsZENvZGVnZW5PcHRpb25zKCkpO1xuICB9O1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBidWlsZENvZGVnZW5PcHRpb25zKCk6IENvZGVnZW5PcHRpb25zO1xufVxuIl19