isolatedModules doesn't respect enabled preserveConstEnum option what the project might be build with

Search Terms
isolatedModules, preserveConstEnum, const enum
Suggestion
The compiler should respect/understand that the package/module was compiled with enabled preserveConstEnums compiler option.
Use Cases
Let's say we have a project written in TypeScript, which uses const enums.
The project uses them because the main const enum's advantage is inlining values instead of runtime accessing to the value.
In other hand the maintainers understand that const enums compiles in nothing in JS code, and that means that consumers can't use a const enums in their JS code (in some cases in TS code either, see above). Thus, they decided to enable preserveConstEnums compiler option to leave all const enums in JS code and allow consumers use them as well.
Up to this moment everything is good. But the next who appears on the stage is isolatedModules (say hello to create-react-app, webpack's transpile-only mode, transpileModule compiler's API and so on). This compiler option is used to detect that imported module could be transpiler without compilation into JS code and everything will work well. One of checks for this option is that you don't import const enums (error TS2748: Cannot access ambient const enums when the '--isolatedModules' flag is provided).
To summarize, if the project/package is compiled with enabled preserveConstEnums, in isolatedModules mode the compiler shouldn't fail with error about unavailability of using const enums, because that's not actually true.
Examples
Quite possible we need to provide that information to the compiler somehow (by providing tsconfig.export.json or in package.json for instance), but I don't even know how it would be done.
Checklist
My suggestion meets these guidelines:

[x] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[x] This wouldn't change the runtime behavior of existing JavaScript code
[x] This could be implemented without emitting different JS based on the types of the expressions
[x] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
[x] This feature would agree with the rest of TypeScript's Design Goals.

It seems like arguably preserveConstEnum should just emit enum instead of const enum to the .d.ts, though I'm sure that would break some other scenario

though I'm sure that would break some other scenario

@RyanCavanaugh Yeah, at least a consumer who uses TypeScript without using isolatedModules couldn't get that "enums" inlined 🙂

Any updates for this issue?
CRA hard enforces the isolatedModules: true flag nowadays. It used to be possible to extend the tsconfig to override this but now it looks like eject or replace the react-scripts file specific to enforcing tsconfig. Neither is desirable when the issue is strictly the way preserveConstEnum is behaving. Running into this issue right now so curious. Thanks!

i have same issue

I'm hitting this issue as well trying to enable the isolatedModules flag.

@RyanCavanaugh I see this is tagged with Awaiting more feedback. What feedback are you looking for?

We’ve discussed this some in the past and I feel like I must be forgetting some of the complexities that came up. I just jotted down some straw-man proposals, and the simplest one feels fairly straightforward:
preserved modifier for const enums
// @Filename: /node_modules/foo/index.d.ts
export preserved const enum Foo {
  Bar = 1
}

// @Filename: /index.ts
// @isolatedModules: true
import { Foo } from "foo";
Foo.Bar; // ok

Only valid in ambient contexts, automatically added to declaration emit under --preserveConstEnums.
A preserved const enum can be imported and used under --isolatedModules because its usage need not be inlined.
If needed, a compiler flag could be added that controls whether preserved const enums from node_modules / other projects / declaration files get inlined or not. (We’ve had some concerns before about inlining enum values from declaration files that could get out of sync with implementations, but I want to hear the case for that again before I’d be enthusiastic about adding a flag.)

I tossed around another proposal combining @RyanCavanaugh’s original suggestion that const enums could be emitted to declaration files as regular enums with a compiler option --inlineEnums that could offer local control over what enums get inlined, but ultimately I think that level of control would be more confusing than useful. Part of our hesitation on doing anything about this is that enums are already confusing, so we want a solution to be as simple and explainable as possible.

There are three issues with exported ambient const enums, I think:

They're incompatible with isolatedModules.
∴ tsc --declaration stops downstream consumers from using isolatedModules, roughly. Specifically, by transforming non-ambient const enums (.ts files) into ambient const enums (.d.ts files), it precipitates the following trilemma:

upstream project can use const enums
downstream consumer can use those enums' values
downstream consumer can use isolatedModules

Choose any two. :disappointed:

Consumers can inline enum values from upstream version A at compile time and import version B at runtime, with different values, if you're not very careful:

https://github.com/microsoft/TypeScript/issues/37179#issuecomment-594070333
https://github.com/microsoft/TypeScript/pull/5297#issuecomment-151634916
https://github.com/microsoft/TypeScript/issues/5219#issue-110947903

Import elision. importsNotUsedAsValues: "preserve" preserves imports for inlined enum values, but ambient const enums (.d.ts files) may or may not have runtime .js files. The usual way to unambiguously elide imports, import type, doesn't allow const enum values, currently.

https://github.com/microsoft/TypeScript/pull/46556#issue-1037783024
https://github.com/microsoft/TypeScript/issues/42991#issue-817625053

Taking the opposite approach (eliding imports for inlined enum values) would invalidate importsNotUsedAsValues: "preserve" for ambient const enums with runtime .js files.

These are the solutions as I see them:

A. Don't use const enums entirely. Ban them with a linter.
Avoids #1 and #2 and sidesteps #3, but stops upstream projects from inlining enum values, with performance implications.
Doable today.

B. Transform non-ambient const enums into ambient non-const enums, either with:

Open PR: preserveConstEnums alone (https://github.com/microsoft/TypeScript/pull/46626).
Doable today: preserveConstEnums + a build step (https://github.com/microsoft/TypeScript/pull/5297#issuecomment-149354485, https://github.com/microsoft/TypeScript/pull/5422#issue-113688398).

Same impact as A except upstream projects can inline enum values. Works with and without isolatedModules. Consumers can't inline enum values (:+1: good, see #2).

C. Want consumers to inline enum values, with consequent isolatedModules incompatibility, maybe because all participating projects are part of an internal ecosystem/composite project where versions are synchronized? Then preserveConstEnums: false is for you!
Know and accept the implications: #1, #2 and #3.
Doable today.

X. Want some consumers to inline enum values and others not to, or another advanced scenario? Out of scope, for now:

local control over what enums get inlined, but ultimately I think that level of control would be more confusing than useful. Part of our hesitation on doing anything about this is that enums are already confusing, so we want a solution to be as simple and explainable as possible.

Note: Existing preserveConstEnums and isolatedModules behavior
Because I TIL'ed :-)

Turns off inlining
Preserves imports
Transforms enums -> .js

preserveConstEnums
:x:
:x:
:heavy_check_mark:

isolatedModules
:heavy_check_mark:
:heavy_check_mark:
:heavy_check_mark:

I.e. isolatedModules implies preserveConstEnums.

I've been giving significant thought to injecting a custom transformer into the pipeline that converts this:
// Current const enum
export const enum AstKind {
    None = 'None',
    Script = 'Script',
    AndIf = 'AndIf',
    Command = 'Command',
    CompoundWord = 'CompoundWord',
    VariableExpansion = 'VariableExpansion',
    Text = 'Text'
}

Into this:
// Provide values at runtime, use an object literal to allow minifiers to drop unused values and/or inline (if in the same scope, at least)
export const AstKind = {
    None: 'None',
    Script: 'Script',
    AndIf: 'AndIf',
    Command: 'Command',
    CompoundWord: 'CompoundWord',
    VariableExpansion: 'VariableExpansion',
    Text: 'Text'
} as const;
// Allow the values to be used in a type position
export declare namespace AstKind {
    export type None = typeof AstKind.None;
    export type Script = typeof AstKind.Script;
    export type AndIf = typeof AstKind.AndIf;
    export type Command = typeof AstKind.Command;
    export type CompoundWord = typeof AstKind.CompoundWord;
    export type VariableExpansion = typeof AstKind.VariableExpansion;
    export type Text = typeof AstKind.Text;
}
// Allow for the enum itself ot be used in a type position
export type AstKind = typeof AstKind[keyof typeof AstKind];

This allows the following usage:
import { AstKind } from './AstKind';
const x: AstKind.AndIf = AstKind.AndIf;
const y: AstKind = AstKind.Command;

Also further enables the following, which you can't do with a const enum:
import { type AstKind } from './AstKind';
// Type checks properly
const z: AstKind.Text = 'Text';
const z: AstKind = 'Text';

but still prevents, for example:
const x: AstKind.AndIf = AstKind.Command; // Error, not assignable
const y: AstKind = 'Unknown'; // Error, not assignable

The one restriction of current const enum that gets lost is that it allows cross-assignment of enums as long as the values are compatible, but this is as much a feature as it is a bug, since it is what allows type-only imports to the enum.
It is possible to restore the assignability restriction while still allowing the raw string literal assignment via something like:
export declare const __enum__OtherEnum: unique symbol;
export const OtherEnum = {
    Bar: 'None',
    Baz: 'Script',
    Foo: 'Test'
} as {
    Bar: 'None' & { __enum?: typeof __enum__OtherEnum };
    Baz: 'Script' & { __enum?: typeof __enum__OtherEnum };
    Foo: 'Test' & { __enum?: typeof __enum__OtherEnum };
};
export declare namespace OtherEnum {
    export type Bar = typeof OtherEnum.Bar;
    export type Baz = typeof OtherEnum.Baz;
    export type Foo = typeof OtherEnum.Foo;
}
export type OtherEnum = typeof OtherEnum[keyof typeof OtherEnum];

Though unfortunately that probably has deleterious effects on type-checking performance. It is also a lot less readable than an enum OtherEnum { ... } declaration.

preserved modifier for const enums

Maybe the keyword should be inline.  It seems that the underlying concept is:

The person who created this enum thinks it's a good idea for compilers to inline its members
However there's no obligation to do so; the runtime object will always exist

That is exactly the meaning of  inline in C and C++.
In fact const enum is somewhat counterintuitive, given that enums are always   "constants" (in common understanding).
It would also simplify adoption. The message is:  "search+replace const enum with inline enum everywhere and you're good."
And then later we could introduce inline functions. 😉

We run into this error at work because we define all our enums as const and our entire codebase is put together using project references.
The crux of the issue, from what I can tell, is that TS treats project references as an "opaque boundary" and ignores the tsconfig settings that may be set.
This is one of those "principle of least surprise" things I suppose - because there's no guarantee that a referenced project is built using the referenced tsconfig settings so in order to be least surprising (and cause fewer runtime crashes) it's better to assume the const enum is always elided.
However this does mean that in codebases that are built using the same config/built tool setup there's no way to convince TS that the pattern is in fact completely safe. So you're left with a typecheck run that's littered with TS2748 errors.
At Canva we work around this by setting noEmitOnError: true (along side isolatedModules: true, preserveConstEnums: true) and we don't run tsc directly and instead have a wrapper which deletes the TS2748 error from the output.
 Thankfully VSCode doesn't show this specific error in the IDE (https://github.com/microsoft/vscode/issues/207970) or else we'd be in a difficult position and have to either convert all enums to non-const enums or disable isolatedModules in our root config.
I wonder if there's a simple solution here to allow a user to convince TS that accessing const enum across the boundary is in fact safe? allowConstEnumAcrossBoundaryTrustMeBro: true?

Project references are not always considered as an opaque boundary. Module resolution in referenced .d.ts files, for example, happens according to the referenced project’s settings, not the importing project’s settings, and we’ve speculated at times that there may be other places in the checker where we should be fetching the referenced project’s settings but are currently using the currently checked project’s settings. It doesn’t seem out of the question to me that this error could be silenced when it can be determined to be safe due to the ambient file belonging to a project that uses preserveConstEnums.

I wanted something like this in #51530 so that we could use const enums within TS but still refer to them by value if needed; my issue is probably a dupe of the above request.


Add a counter for container restarts

A relatively new feature in ECS:
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/container-restart-policy.html
I confirmed experimentally that it works as they say; the value is nil if there is no enabled restart policy and 0 if there is.

@SuperQ please take a look, thanks!


🧪QA Testing

Complete The Item Below

[X] I have reviewed and tested all of the issues in the linked milestone.

Relevant Information
Fully testing for normal operations is all that is required.
Things to pay attention to:

Pay special attention to how the application moves from scene to scene.
Each scene should NOT save its state.

Note This means that if you change something in a scene, move to another scene, then come back to the scene
where you change something, it should all be reset back to defaults

QA Testing Dependencies
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

@CalvinWilkinson  The Mouse Scene and Non Animated Graphics Scene do not reset to default after being changed, then going back to the scene.  Other than that, everything checks out as normal.


Is there a correct way to change the listening port for Uptime Kuma?

⚠ Please verify that this bug has NOT been raised before.

[X] I checked and didn't find similar issue

🛡 Security Policy

[X] I agree to have read this project Security Policy

📝 Describe your problem
Hi guys, is there an easy / correct way to change the listening port for Uptime Kuma? I'm seeing a few places in the code where 3001 seems to be hard coded so just want to make sure. Please let me know, thanks!
🐻 Uptime-Kuma Version
1.11.1
💻 Operating System and Arch
CENTOS 7
🌐 Browser
Google Chrome
🐋 Docker Version
None
🟩 NodeJS Version
16.x

Yes, you can.
Environment Variable: UPTIME_KUMA_PORT=12345
Argument: node server/server.js --port 12345

Hi Louis
I am wondering as a fairly new Linux user how to accompish this using ubuntu 20.04 LTS and the NodeJS

After pulling a few hair, it appears that the correct syntax is actually: node server/server.js --port=12345
Using --port 12345 sets the args object as follow:
{ '12345': true, port: true }
instead of the desired:
{ port: 12345 }
Also, the server looks at the PORT environment variable before defaulting to 3001. Running from overmind that specifies PORT=5000 will affect the default.

Or you can edit the server.js by nanow and doing CTRL+W type "3001" change it to your port number

Or you can edit the server.js by nanow and doing CTRL+W type "3001" change it to your port number

Not recommended, it will be reset when update


Deployment Stopped Working

I have an app deployed on Azure Function apps that I am updating with Visual Studio Code. it was working fine until this week, when the deployments started failing.  I made some very minor changes to the code, but Im fairly new to Azure Function apps so any help on this would be greatly appreciated.
6:41:01 PM project: Starting deployment...
6:41:01 PM project: Creating zip package...
6:41:02 PM project: Zip package size: 10.8 kB
6:41:01 PM project: Fetching changes.
6:41:01 PM project: Cleaning up temp folders from previous zip deployments and extracting pushed zip file /tmp/zipdeploy/1f014e10-2a2d-411b-a089-e0c0491fc3a7.zip (0.01 MB) to /tmp/zipdeploy/extracted
6:41:03 PM project: Updating submodules.
6:41:03 PM project: Preparing deployment for commit id '3a6565b21a'.
6:41:03 PM project: Repository path is /tmp/zipdeploy/extracted
6:41:03 PM project: Running oryx build...
6:41:03 PM project: Command: oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.7 -p packagedir=.python_packages/lib/site-packages
6:41:04 PM project: Operation performed by Microsoft Oryx, https://github.com/Microsoft/Oryx
6:41:04 PM project: You can report issues at https://github.com/Microsoft/Oryx/issues
6:41:04 PM project: Oryx Version: 0.2.20200813.1, Commit: 16c4841161ae3c639fd26b0212be4f55e515ef7d, ReleaseTagName: 20200813.1
6:41:04 PM project: Build Operation ID: |or16yBTg7MM=.9abf077f_
6:41:04 PM project: Repository Commit : 3a6565b21aa84370ad726ddbe342256c
6:41:04 PM project: Detecting platforms...
6:41:04 PM project: Detected following platforms:
6:41:04 PM project:   python: 3.7.9
6:41:04 PM project: Warning: An outdated version of python was detected (3.7.9). Consider updating.\nVersions supported by Oryx: https://github.com/microsoft/Oryx
6:41:04 PM project: Source directory     : /tmp/zipdeploy/extracted
6:41:04 PM project: Destination directory: /home/site/wwwroot
6:41:04 PM project: Python Version: /tmp/oryx/platforms/python/3.7.9/bin/python3.7
6:41:04 PM project: Running pip install...
6:41:05 PM project: [23:41:05+0000] Collecting requests==2.24.0
6:41:05 PM project: [23:41:05+0000]   Using cached requests-2.24.0-py2.py3-none-any.whl (61 kB)
6:41:05 PM project: [23:41:05+0000] Collecting mysqlclient==2.0.1
6:41:05 PM project: [23:41:05+0000]   Using cached mysqlclient-2.0.1.tar.gz (87 kB)
6:41:05 PM project: [23:41:05+0000] Collecting mysql==0.0.2
6:41:06 PM project: [23:41:05+0000]   Downloading mysql-0.0.2.tar.gz (1.9 kB)
6:41:06 PM project: [23:41:06+0000] Collecting mysql-connector-python==8.0.21
6:41:08 PM project: [23:41:07+0000]   Using cached mysql_connector_python-8.0.21-cp37-cp37m-manylinux1_x86_64.whl (15.8 MB)
6:41:08 PM project: [23:41:08+0000] Collecting pyodbc==4.0.30
6:41:08 PM project: [23:41:08+0000]   Using cached pyodbc-4.0.30.tar.gz (266 kB)
6:41:08 PM project: [23:41:08+0000] Collecting certifi>=2017.4.17
6:41:08 PM project: [23:41:08+0000]   Using cached certifi-2020.6.20-py2.py3-none-any.whl (156 kB)
6:41:08 PM project: [23:41:08+0000] Collecting chardet<4,>=3.0.2
6:41:08 PM project: [23:41:08+0000]   Using cached chardet-3.0.4-py2.py3-none-any.whl (133 kB)
6:41:08 PM project: [23:41:08+0000] Collecting idna<3,>=2.5
6:41:08 PM project: [23:41:08+0000]   Using cached idna-2.10-py2.py3-none-any.whl (58 kB)
6:41:08 PM project: [23:41:08+0000] Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
6:41:08 PM project: [23:41:08+0000]   Using cached urllib3-1.25.10-py2.py3-none-any.whl (127 kB)
6:41:09 PM project: [23:41:09+0000] Collecting protobuf>=3.0.0
6:41:09 PM project: [23:41:09+0000]   Using cached protobuf-3.13.0-cp37-cp37m-manylinux1_x86_64.whl (1.3 MB)
6:41:09 PM project: [23:41:09+0000] Collecting six>=1.9
6:41:09 PM project: [23:41:09+0000]   Using cached six-1.15.0-py2.py3-none-any.whl (10 kB)
6:41:09 PM project: [23:41:09+0000] Collecting setuptools
6:41:09 PM project: [23:41:09+0000]   Using cached setuptools-50.3.0-py3-none-any.whl (785 kB)
6:41:09 PM project: [23:41:09+0000] Building wheels for collected packages: mysqlclient, mysql, pyodbc
6:41:09 PM project: [23:41:09+0000]   Building wheel for mysqlclient (setup.py): started
6:41:10 PM project:   ERROR: Command errored out with exit status 1:
6:41:10 PM project: [23:41:10+0000]   Building wheel for mysqlclient (setup.py): finished with status 'error'
6:41:10 PM project:    command: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/mysqlclient/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/mysqlclient/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/pip-wheel-umqf936c
6:41:10 PM project:        cwd: /tmp/pip-install-lu85bk6l/mysqlclient/
6:41:10 PM project: [23:41:10+0000]   Running setup.py clean for mysqlclient
6:41:10 PM project:   Complete output (29 lines):
6:41:10 PM project:   running bdist_wheel
6:41:10 PM project:   running build
6:41:10 PM project:   running build_py
6:41:10 PM project:   creating build
6:41:11 PM project:   creating build/lib.linux-x86_64-3.7
6:41:11 PM project:   creating build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/init.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/exceptions.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/release.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   copying MySQLdb/times.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   creating build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   copying MySQLdb/constants/init.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:11 PM project:   running build_ext
6:41:11 PM project:   building 'MySQLdb.mysql' extension
6:41:11 PM project:   creating build/temp.linux-x86_64-3.7
6:41:11 PM project:   creating build/temp.linux-x86_64-3.7/MySQLdb
6:41:11 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Dversion_info=(2,0,1,'final',0) -D__version=2.0.1 -I/usr/include/mysql -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c MySQLdb/_mysql.c -o build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o
6:41:11 PM project:   gcc -pthread -shared build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o -L/usr/lib/x86_64-linux-gnu -L/opt/python/3.7.9/lib -lmariadbclient -lpthread -lm -ldl -lpython3.7m -o build/lib.linux-x86_64-3.7/MySQLdb/_mysql.cpython-37m-x86_64-linux-gnu.so
6:41:11 PM project:   /usr/bin/ld: cannot find -lpython3.7m
6:41:11 PM project:   collect2: error: ld returned 1 exit status
6:41:11 PM project:   error: command 'gcc' failed with exit status 1
6:41:11 PM project:   ----------------------------------------
6:41:11 PM project:   ERROR: Failed building wheel for mysqlclient
6:41:11 PM project: [23:41:11+0000]   Building wheel for mysql (setup.py): started
6:41:11 PM project: [23:41:11+0000]   Building wheel for mysql (setup.py): finished with status 'done'
6:41:11 PM project: [23:41:11+0000]   Created wheel for mysql: filename=mysql-0.0.2-py3-none-any.whl size=1247 sha256=fef0346f8b0429725b23721729138eceefb7195716592127039f80311b566b5b
6:41:11 PM project: [23:41:11+0000]   Stored in directory: /usr/local/share/pip-cache/wheels/f6/60/6d/b1cf0653d003ddb0be2985a4d5f2c6f977d91f0862df094de8
6:41:11 PM project: [23:41:11+0000]   Building wheel for pyodbc (setup.py): started
6:41:16 PM project: [23:41:16+0000]   Building wheel for pyodbc (setup.py): finished with status 'error'
6:41:16 PM project: [23:41:16+0000]   Running setup.py clean for pyodbc
6:41:16 PM project:   ERROR: Command errored out with exit status 1:
6:41:16 PM project:    command: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/pyodbc/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/pyodbc/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/pip-wheel-vnz78b6c
6:41:16 PM project:        cwd: /tmp/pip-install-lu85bk6l/pyodbc/
6:41:16 PM project:   Complete output (142 lines):
6:41:16 PM project:   running bdist_wheel
6:41:16 PM project:   running build
6:41:16 PM project:   running build_ext
6:41:16 PM project:   building 'pyodbc' extension
6:41:16 PM project:   creating build
6:41:16 PM project:   creating build/temp.linux-x86_64-3.7
6:41:16 PM project:   creating build/temp.linux-x86_64-3.7/src
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/buffer.cpp -o build/temp.linux-x86_64-3.7/src/buffer.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/cnxninfo.cpp -o build/temp.linux-x86_64-3.7/src/cnxninfo.o -Wno-write-strings
6:41:16 PM project:   src/cnxninfo.cpp: In function ‘PyObject GetHash(PyObject)’:
6:41:16 PM project:   src/cnxninfo.cpp:45:18: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:        Object bytes(PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(p), PyUnicode_GET_SIZE(p), 0));
6:41:16 PM project:                     ^~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/cnxninfo.cpp:7:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/cnxninfo.cpp:45:88: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:        Object bytes(PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(p), PyUnicode_GET_SIZE(p), 0));
6:41:16 PM project:                                                                                ^
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/cnxninfo.cpp:7:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/connection.cpp -o build/temp.linux-x86_64-3.7/src/connection.o -Wno-write-strings
6:41:16 PM project:   src/connection.cpp: In function ‘PyObject* Connection_getinfo(PyObject*, PyObject*)’:
6:41:16 PM project:   src/connection.cpp:835:40: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
6:41:16 PM project:            SQLUINTEGER n = (SQLUINTEGER)szBuffer; // Does this work on PPC or do we need a union?
6:41:16 PM project:                                           ^~~~~~~~
6:41:16 PM project:   src/connection.cpp:848:49: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
6:41:16 PM project:            result = PyInt_FromLong((SQLUSMALLINT)szBuffer);
6:41:16 PM project:                                                    ^~~~~~~~
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/cursor.cpp -o build/temp.linux-x86_64-3.7/src/cursor.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/errors.cpp -o build/temp.linux-x86_64-3.7/src/errors.o -Wno-write-strings
6:41:16 PM project:   src/errors.cpp: In function ‘PyObject* GetErrorFromHandle(Connection*, const char*, HDBC, HSTMT)’:
6:41:16 PM project:   src/errors.cpp:331:17: warning: ‘Py_ssize_t PyUnicode_GetSize(PyObject*)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:        if (!msg || PyUnicode_GetSize(msg.Get()) == 0)
6:41:16 PM project:                    ^~~~~~~~~~~~~~~~~
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/errors.cpp:2:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:793:24: note: declared here
6:41:16 PM project:    PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
6:41:16 PM project:                           ^~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/errors.cpp:331:44: warning: ‘Py_ssize_t PyUnicode_GetSize(PyObject*)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:        if (!msg || PyUnicode_GetSize(msg.Get()) == 0)
6:41:16 PM project:                                               ^
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/errors.cpp:2:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:793:24: note: declared here
6:41:16 PM project:    PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(
6:41:16 PM project:                           ^~~~~~~~~~~~~~~~~
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/getdata.cpp -o build/temp.linux-x86_64-3.7/src/getdata.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/params.cpp -o build/temp.linux-x86_64-3.7/src/params.o -Wno-write-strings
6:41:16 PM project:   src/params.cpp: In function ‘bool ExecuteMulti(Cursor*, PyObject*, PyObject*)’:
6:41:16 PM project:   src/params.cpp:1932:33: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF8(source, cb, "strict");
6:41:16 PM project:                                    ^~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1932:74: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF8(source, cb, "strict");
6:41:16 PM project:                                                                             ^
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1935:33: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_NATIVE);
6:41:16 PM project:                                    ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1935:93: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_NATIVE);
6:41:16 PM project:                                                                                ^
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1938:33: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_LE);
6:41:16 PM project:                                    ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1938:89: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_LE);
6:41:16 PM project:                                                                                ^
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1941:33: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_BE);
6:41:16 PM project:                                    ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   src/params.cpp:1941:89: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]
6:41:16 PM project:                            bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_BE);
6:41:16 PM project:                                                                                ^
6:41:16 PM project:   In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,
6:41:16 PM project:                    from src/pyodbc.h:45,
6:41:16 PM project:                    from src/params.cpp:10:
6:41:16 PM project:   /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here
6:41:16 PM project:    PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(
6:41:16 PM project:                          ^~~~~~~~~~~~~~~~~~~~~
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/pyodbccompat.cpp -o build/temp.linux-x86_64-3.7/src/pyodbccompat.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/pyodbcdbg.cpp -o build/temp.linux-x86_64-3.7/src/pyodbcdbg.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/pyodbcmodule.cpp -o build/temp.linux-x86_64-3.7/src/pyodbcmodule.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/row.cpp -o build/temp.linux-x86_64-3.7/src/row.o -Wno-write-strings
6:41:16 PM project:   gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/textenc.cpp -o build/temp.linux-x86_64-3.7/src/textenc.o -Wno-write-strings
6:41:16 PM project:   creating build/lib.linux-x86_64-3.7
6:41:16 PM project:   g++ -pthread -shared build/temp.linux-x86_64-3.7/src/buffer.o build/temp.linux-x86_64-3.7/src/cnxninfo.o build/temp.linux-x86_64-3.7/src/connection.o build/temp.linux-x86_64-3.7/src/cursor.o build/temp.linux-x86_64-3.7/src/errors.o build/temp.linux-x86_64-3.7/src/getdata.o build/temp.linux-x86_64-3.7/src/params.o build/temp.linux-x86_64-3.7/src/pyodbccompat.o build/temp.linux-x86_64-3.7/src/pyodbcdbg.o build/temp.linux-x86_64-3.7/src/pyodbcmodule.o build/temp.linux-x86_64-3.7/src/row.o build/temp.linux-x86_64-3.7/src/textenc.o -L/usr/lib -L/usr/local/lib -L/opt/python/3.7.9/lib -lodbc -lpython3.7m -o build/lib.linux-x86_64-3.7/pyodbc.cpython-37m-x86_64-linux-gnu.so
6:41:16 PM project:   /usr/bin/ld: cannot find -lpython3.7m
6:41:16 PM project:   collect2: error: ld returned 1 exit status
6:41:16 PM project:   error: command 'g++' failed with exit status 1
6:41:16 PM project:   ----------------------------------------
6:41:16 PM project:   ERROR: Failed building wheel for pyodbc
6:41:16 PM project: [23:41:16+0000] Successfully built mysql
6:41:16 PM project: [23:41:16+0000] Failed to build mysqlclient pyodbc
6:41:16 PM project: DEPRECATION: Could not build wheels for mysqlclient, pyodbc which do not use PEP 517. pip will fall back to legacy 'setup.py install' for these. pip 21.0 will remove support for this functionality. A possible replacement is to fix the wheel build issue reported above. You can find discussion regarding this at https://github.com/pypa/pip/issues/8368.
6:41:16 PM project: [23:41:16+0000] Installing collected packages: certifi, chardet, idna, urllib3, requests, mysqlclient, mysql, six, setuptools, protobuf, mysql-connector-python, pyodbc
6:41:17 PM project: [23:41:17+0000]     Running setup.py install for mysqlclient: started
6:41:18 PM project:     ERROR: Command errored out with exit status 1:
6:41:18 PM project:      command: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/mysqlclient/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/mysqlclient/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-record-54i9uks2/install-record.txt --single-version-externally-managed --home /tmp/pip-target-wn1fgcg5 --compile --install-headers /tmp/pip-target-wn1fgcg5/include/python/mysqlclient
6:41:18 PM project: [23:41:18+0000]     Running setup.py install for mysqlclient: finished with status 'error'
6:41:18 PM project:          cwd: /tmp/pip-install-lu85bk6l/mysqlclient/
6:41:18 PM project:     Complete output (29 lines):
6:41:18 PM project:     running install
6:41:18 PM project:     running build
6:41:18 PM project:     running build_py
6:41:18 PM project:     creating build
6:41:18 PM project:     creating build/lib.linux-x86_64-3.7
6:41:18 PM project:     creating build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/init.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/exceptions.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/release.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     copying MySQLdb/times.py -> build/lib.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     creating build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     copying MySQLdb/constants/init.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants
6:41:18 PM project:     running build_ext
6:41:18 PM project:     building 'MySQLdb.mysql' extension
6:41:18 PM project:     creating build/temp.linux-x86_64-3.7
6:41:18 PM project:     creating build/temp.linux-x86_64-3.7/MySQLdb
6:41:18 PM project:     gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Dversion_info=(2,0,1,'final',0) -D__version=2.0.1 -I/usr/include/mysql -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c MySQLdb/_mysql.c -o build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o
6:41:18 PM project:     gcc -pthread -shared build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o -L/usr/lib/x86_64-linux-gnu -L/opt/python/3.7.9/lib -lmariadbclient -lpthread -lm -ldl -lpython3.7m -o build/lib.linux-x86_64-3.7/MySQLdb/_mysql.cpython-37m-x86_64-linux-gnu.so
6:41:18 PM project:     /usr/bin/ld: cannot find -lpython3.7m
6:41:18 PM project:     collect2: error: ld returned 1 exit status
6:41:18 PM project:     error: command 'gcc' failed with exit status 1
6:41:18 PM project:     ----------------------------------------
6:41:18 PM project: ERROR: Command errored out with exit status 1: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/mysqlclient/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/mysqlclient/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-record-54i9uks2/install-record.txt --single-version-externally-managed --home /tmp/pip-target-wn1fgcg5 --compile --install-headers /tmp/pip-target-wn1fgcg5/include/python/mysqlclient Check the logs for full command output.
6:41:18 PM project: WARNING: You are using pip version 20.2; however, version 20.2.3 is available.
6:41:18 PM project: You should consider upgrading via the '/tmp/oryx/platforms/python/3.7.9/bin/python3.7 -m pip install --upgrade pip' command.
6:41:18 PM project: Done in 14 sec(s).
6:41:20 PM project: ERROR: Command errored out with exit status 1:\n   command: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/mysqlclient/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/mysqlclient/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/pip-wheel-umqf936c\n       cwd: /tmp/pip-install-lu85bk6l/mysqlclient/\n  Complete output (29 lines):\n  running bdist_wheel\n  running build\n  running build_py\n  creating build\n  creating build/lib.linux-x86_64-3.7\n  creating build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/init.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/exceptions.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/release.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  copying MySQLdb/times.py -> build/lib.linux-x86_64-3.7/MySQLdb\n  creating build/lib.linux-x86_64-3.7/MySQLdb/constants\n  copying MySQLdb/constants/init.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n  copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n  copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n  copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n  copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n  copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n  running build_ext\n  building 'MySQLdb.mysql' extension\n  creating build/temp.linux-x86_64-3.7\n  creating build/temp.linux-x86_64-3.7/MySQLdb\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Dversion_info=(2,0,1,'final',0) -D__version=2.0.1 -I/usr/include/mysql -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c MySQLdb/_mysql.c -o build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o\n  gcc -pthread -shared build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o -L/usr/lib/x86_64-linux-gnu -L/opt/python/3.7.9/lib -lmariadbclient -lpthread -lm -ldl -lpython3.7m -o build/lib.linux-x86_64-3.7/MySQLdb/_mysql.cpython-37m-x86_64-linux-gnu.so\n  /usr/bin/ld: cannot find -lpython3.7m\n  collect2: error: ld returned 1 exit status\n  error: command 'gcc' failed with exit status 1\n  ----------------------------------------\n  ERROR: Failed building wheel for mysqlclient\n  ERROR: Command errored out with exit status 1:\n   command: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/pyodbc/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/pyodbc/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/pip-wheel-vnz78b6c\n       cwd: /tmp/pip-install-lu85bk6l/pyodbc/\n  Complete output (142 lines):\n  running bdist_wheel\n  running build\n  running build_ext\n  building 'pyodbc' extension\n  creating build\n  creating build/temp.linux-x86_64-3.7\n  creating build/temp.linux-x86_64-3.7/src\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/buffer.cpp -o build/temp.linux-x86_64-3.7/src/buffer.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/cnxninfo.cpp -o build/temp.linux-x86_64-3.7/src/cnxninfo.o -Wno-write-strings\n  src/cnxninfo.cpp: In function ‘PyObject* GetHash(PyObject*)’:\n  src/cnxninfo.cpp:45:18: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]\n       Object bytes(PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(p), PyUnicode_GET_SIZE(p), 0));\n                    ^~\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/cnxninfo.cpp:7:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(\n                         ^~\n  src/cnxninfo.cpp:45:88: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]\n       Object bytes(PyUnicode_EncodeUTF8(PyUnicode_AS_UNICODE(p), PyUnicode_GET_SIZE(p), 0));\n                                                                                ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/cnxninfo.cpp:7:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(\n                         ^~\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/connection.cpp -o build/temp.linux-x86_64-3.7/src/connection.o -Wno-write-strings\n  src/connection.cpp: In function ‘PyObject* Connection_getinfo(PyObject*, PyObject*)’:\n  src/connection.cpp:835:40: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]\n           SQLUINTEGER n = (SQLUINTEGER)szBuffer; // Does this work on PPC or do we need a union?\n                                          ^~\n  src/connection.cpp:848:49: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]\n           result = PyInt_FromLong((SQLUSMALLINT)szBuffer);\n                                                   ^~\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/cursor.cpp -o build/temp.linux-x86_64-3.7/src/cursor.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/errors.cpp -o build/temp.linux-x86_64-3.7/src/errors.o -Wno-write-strings\n  src/errors.cpp: In function ‘PyObject* GetErrorFromHandle(Connection*, const char*, HDBC, HSTMT)’:\n  src/errors.cpp:331:17: warning: ‘Py_ssize_t PyUnicode_GetSize(PyObject*)’ is deprecated [-Wdeprecated-declarations]\n       if (!msg || PyUnicode_GetSize(msg.Get()) == 0)\n                   ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/errors.cpp:2:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:793:24: note: declared here\n   PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(\n                          ^\n  src/errors.cpp:331:44: warning: ‘Py_ssize_t PyUnicode_GetSize(PyObject*)’ is deprecated [-Wdeprecated-declarations]\n       if (!msg || PyUnicode_GetSize(msg.Get()) == 0)\n                                              ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/errors.cpp:2:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:793:24: note: declared here\n   PyAPI_FUNC(Py_ssize_t) PyUnicode_GetSize(\n                          ^\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/getdata.cpp -o build/temp.linux-x86_64-3.7/src/getdata.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/params.cpp -o build/temp.linux-x86_64-3.7/src/params.o -Wno-write-strings\n  src/params.cpp: In function ‘bool ExecuteMulti(Cursor*, PyObject*, PyObject*)’:\n  src/params.cpp:1932:33: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF8(source, cb, "strict");\n                                   ^~\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(\n                         ^~\n  src/params.cpp:1932:74: warning: ‘PyObject* PyUnicode_EncodeUTF8(const Py_UNICODE*, Py_ssize_t, const char*)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF8(source, cb, "strict");\n                                                                            ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1320:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF8(\n                         ^~\n  src/params.cpp:1935:33: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_NATIVE);\n                                   ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(\n                         ^\n  src/params.cpp:1935:93: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_NATIVE);\n                                                                                ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(\n                         ^\n  src/params.cpp:1938:33: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_LE);\n                                   ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(\n                         ^\n  src/params.cpp:1938:89: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_LE);\n                                                                                ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(\n                         ^\n  src/params.cpp:1941:33: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_BE);\n                                   ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(\n                         ^\n  src/params.cpp:1941:89: warning: ‘PyObject* PyUnicode_EncodeUTF16(const Py_UNICODE*, Py_ssize_t, const char*, int)’ is deprecated [-Wdeprecated-declarations]\n                           bytes = PyUnicode_EncodeUTF16(source, cb, "strict", BYTEORDER_BE);\n                                                                                ^\n  In file included from /tmp/oryx/platforms/python/3.7.9/include/python3.7m/Python.h:99:0,\n                   from src/pyodbc.h:45,\n                   from src/params.cpp:10:\n  /tmp/oryx/platforms/python/3.7.9/include/python3.7m/unicodeobject.h:1480:23: note: declared here\n   PyAPI_FUNC(PyObject*) PyUnicode_EncodeUTF16(\n                         ^~~~~~~~~~~~~\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/pyodbccompat.cpp -o build/temp.linux-x86_64-3.7/src/pyodbccompat.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/pyodbcdbg.cpp -o build/temp.linux-x86_64-3.7/src/pyodbcdbg.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/pyodbcmodule.cpp -o build/temp.linux-x86_64-3.7/src/pyodbcmodule.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/row.cpp -o build/temp.linux-x86_64-3.7/src/row.o -Wno-write-strings\n  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -DPYODBC_VERSION=4.0.30 -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c src/textenc.cpp -o build/temp.linux-x86_64-3.7/src/textenc.o -Wno-write-strings\n  creating build/lib.linux-x86_64-3.7\n  g++ -pthread -shared build/temp.linux-x86_64-3.7/src/buffer.o build/temp.linux-x86_64-3.7/src/cnxninfo.o build/temp.linux-x86_64-3.7/src/connection.o build/temp.linux-x86_64-3.7/src/cursor.o build/temp.linux-x86_64-3.7/src/errors.o build/temp.linux-x86_64-3.7/src/getdata.o build/temp.linux-x86_64-3.7/src/params.o build/temp.linux-x86_64-3.7/src/pyodbccompat.o build/temp.linux-x86_64-3.7/src/pyodbcdbg.o build/temp.linux-x86_64-3.7/src/pyodbcmodule.o build/temp.linux-x86_64-3.7/src/row.o build/temp.linux-x86_64-3.7/src/textenc.o -L/usr/lib -L/usr/local/lib -L/opt/python/3.7.9/lib -lodbc -lpython3.7m -o build/lib.linux-x86_64-3.7/pyodbc.cpython-37m-x86_64-linux-gnu.so\n  /usr/bin/ld: cannot find -lpython3.7m\n  collect2: error: ld returned 1 exit status\n  error: command 'g++' failed with exit status 1\n  ----------------------------------------\n  ERROR: Failed building wheel for pyodbc\nDEPRECATION: Could not build wheels for mysqlclient, pyodbc which do not use PEP 517. pip will fall back to legacy 'setup.py install' for these. pip 21.0 will remove support for this functionality. A possible replacement is to fix the wheel build issue reported above. You can find discussion regarding this at https://github.com/pypa/pip/issues/8368.\n    ERROR: Command errored out with exit status 1:\n     command: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/mysqlclient/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/mysqlclient/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-record-54i9uks2/install-record.txt --single-version-externally-managed --home /tmp/pip-target-wn1fgcg5 --compile --install-headers /tmp/pip-target-wn1fgcg5/include/python/mysqlclient\n         cwd: /tmp/pip-install-lu85bk6l/mysqlclient/\n    Complete output (29 lines):\n    running install\n    running build\n    running build_py\n    creating build\n    creating build/lib.linux-x86_64-3.7\n    creating build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/init.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/exceptions.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/connections.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/converters.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/cursors.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/release.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    copying MySQLdb/times.py -> build/lib.linux-x86_64-3.7/MySQLdb\n    creating build/lib.linux-x86_64-3.7/MySQLdb/constants\n    copying MySQLdb/constants/init.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n    copying MySQLdb/constants/CLIENT.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n    copying MySQLdb/constants/CR.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n    copying MySQLdb/constants/ER.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n    copying MySQLdb/constants/FIELD_TYPE.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n    copying MySQLdb/constants/FLAG.py -> build/lib.linux-x86_64-3.7/MySQLdb/constants\n    running build_ext\n    building 'MySQLdb.mysql' extension\n    creating build/temp.linux-x86_64-3.7\n    creating build/temp.linux-x86_64-3.7/MySQLdb\n    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -Dversion_info=(2,0,1,'final',0) -D__version=2.0.1 -I/usr/include/mysql -I/tmp/oryx/platforms/python/3.7.9/include/python3.7m -c MySQLdb/_mysql.c -o build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o\n    gcc -pthread -shared build/temp.linux-x86_64-3.7/MySQLdb/_mysql.o -L/usr/lib/x86_64-linux-gnu -L/opt/python/3.7.9/lib -lmariadbclient -lpthread -lm -ldl -lpython3.7m -o build/lib.linux-x86_64-3.7/MySQLdb/_mysql.cpython-37m-x86_64-linux-gnu.so\n    /usr/bin/ld: cannot find -lpython3.7m\n    collect2: error: ld returned 1 exit status\n    error: command 'gcc' failed with exit status 1\n    ----------------------------------------\nERROR: Command errored out with exit status 1: /tmp/oryx/platforms/python/3.7.9/bin/python3.7 -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-lu85bk6l/mysqlclient/setup.py'"'"'; file='"'"'/tmp/pip-install-lu85bk6l/mysqlclient/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-record-54i9uks2/install-record.txt --single-version-externally-managed --home /tmp/pip-target-wn1fgcg5 --compile --install-headers /tmp/pip-target-wn1fgcg5/include/python/mysqlclient Check the logs for full command output.\nWARNING: You are using pip version 20.2; however, version 20.2.3 is available.\nYou should consider upgrading via the '/tmp/oryx/platforms/python/3.7.9/bin/python3.7 -m pip install --upgrade pip' command.\n/opt/Kudu/Scripts/starter.sh oryx build /tmp/zipdeploy/extracted -o /home/site/wwwroot --platform python --platform-version 3.7 -p packagedir=.python_packages/lib/site-packages
6:41:25 PM project: Deployment failed.**

Looks like a problem with your dependencies. What does your requirements.txt look like? I would also suggest you try searching some of the errors listed in the logs online

Ive looked for ever at the different error codes and cant find the solution.
I was able to get everything working by creating a new function app on Azure. Its using the same local files when I do the deployment (including the requirements.txt file).  For now Im just using the new function until I can figure out the problem with the other one.

Yeah my team just works on the tooling in VS Code, so unfortunately we don't have access to information in Azure about your problematic app. If you want to get the old function app working, I would suggest contacting Azure support (there should be a question mark in the top right of the portal) which may help


Jshint

separate commits for each file, and another just for the whitespace.
had some issues with rebasing.
tools for running jshint w/ grunt watch are on a separate jshint-tools branch in case anyone wants to run it themselves during changes.

:+1:


feat: option to show repo avatar in prs and issues

https://user-images.githubusercontent.com/63687573/135070504-470ef887-a920-48ab-a278-dfb58a09e6a5.mp4

Thanks for the implementation. Do you see if it's possible to have the issue state along with the avatars?

Thanks for the implementation. Do you see if it's possible to have the issue state along with the avatars?

Of course

@antfu


/jalist into text or hover text

@drekamor Did you want to implement this?

Yes,  I'll work on this

What's this about?


How to get the init_prototypes.pt ？

Dear author, I wonder if you got the prototype, did you first use a pretrained model to extract visual and textual features, then concatenate the visual and textual features, cluster 20 clusters with k-means? Normalize before clustering? Use each cluster center as a prototype? Could you please explain it in detail?Thank you very much.

Dear author, I wonder if you got the prototype, did you first use a pretrained model to extract visual and textual features, then concatenate the visual and textual features, cluster 20 clusters with k-means? Normalize before clustering? Use each cluster center as a prototype? Could you please explain it in detail?Thank you very much.

Hi, thanks for your interest. Yes, the details are mentioned in our paper which is the same as you said.


Scenarios are not running: HttpClient, HttpClientFactory, HttpClientParallel, OrchardBlog

Some scenarios have stopped running:

Scenario
Environment
Last Run

HttpClient
Linux, Cloud, http, KestrelSockets
9/30/19 8:44:00 PM +00:00

HttpClientFactory
Linux, Cloud, http, KestrelSockets
9/30/19 8:45:27 PM +00:00

HttpClientParallel
Linux, Cloud, http, KestrelSockets
9/30/19 8:44:41 PM +00:00

OrchardBlog
Linux, Cloud, http, KestrelSockets
9/30/19 8:49:38 PM +00:00

Logs

Fixed


tokio-postgres not support query parameter

What type of bug is this?
Unexpected error
What subsystems are affected?
Standalone mode
What happened?
Error: Error { kind: Parameters(2, 0), cause: None }
use async_lazy::Lazy;
use tokio_postgres::{types::ToSql, Client, Error, NoTls, Row, ToStatement};
static GT: Lazy<Client> = Lazy::const_new(|| {
  let pg_uri = std::env::var("GREP_URI").unwrap();
  Box::pin(async move {
    let (client, connection) = tokio_postgres::connect(&format!("postgres://{}", pg_uri), NoTls)
      .await
      .unwrap();
    tokio::spawn(async move {
      if let Err(e) = connection.await {
        eprintln!("postgres connection error: {e}");
      }
    });
    client
  })
});
// #[ctor]
// fn init() {
//   TRT.block_on(async move {
//     use std::future::IntoFuture;
//     PG.into_future().await;
//   });
// }
macro_rules! q {
  ($name:ident,$func:ident,$rt:ty) => {
    #[allow(non_snake_case)]
    pub async fn $name<T>(statement: &T, params: &[&(dyn ToSql + Sync)]) -> Result<$rt, Error>
    where
      T: ?Sized + ToStatement,
    {
      match GT.get().unwrap().$func(statement, params).await {
        Ok(r) => Ok(r),
        Err(err) => {
          if err.is_closed() {
            tracing::error!("{}", err);
            std::process::exit(1);
          }
          Err(err)
        }
      }
    }
  };
}
q!(G, query, Vec<Row>);
// q!(Q1, query_one, Row);
// q!(Q01, query_opt, Option<Row>);
#[tokio::main]
async fn main() -> Result<(), Error> {
  use std::future::IntoFuture;
  GT.into_future().await;
  let rows = G(
    "select uid,cid,rid,CAST(ts AS BIGINT) t FROM seen WHERE uid=$1 AND ts>$2 ORDER BY ts",
    &[&1i64, &2i64],
  )
  .await?;
  dbg!(&rows);
  let uid: i64 = rows[0].get(0);
  let cid: i8 = rows[0].get(1);
  let rid: i64 = rows[0].get(2);
  let ts: i64 = rows[0].get(3);
  dbg!(uid, cid, rid, ts);
  Ok(())
}

What operating system did you use?
mac
Relevant log output and stack trace
No response
How can we reproduce the bug?
test code is here https://github.com/wacdev/testgrep

table 定义如下

@xxaier Thank u for your report, I'll look into it ASAP.

The error is reported when the placeholder doesn't contains data type:

This client expects server to inference parameter types, which is a postgres feature of its extended subprotocol. At the moment, greptimedb doesn't have parameter type inference. Let me revisit my TODO here to see if it's possible with recent logical plan refactoring.
As a workaround, you can use query_simple (the simple subprotocol) for now.

I've created #2032 to address compatibility with tokio-postgres, as well as some other language driver like nodejs.


{DJAN-8} Document our Margarita Salt states etc.

See https://caktus.atlassian.net/browse/DJAN-8

@ironfroggy updated!

A few minor comments above, but this looks great!

@vkurup thanks for the comments!  Updated.

:scroll:


fix: some fixes to visibility calculation

make sure the beam normalization is correct (for cases where a
UVBeam-like object is used; if the user wants to provide a beam cube,
then they need to ensure that it is peak-normalized)

make sure the einsum is doing what it's supposed to (outer product
over feeds/antennas, sum over field components, integrate over sky)

These two changes should fix the problems I'm seeing with the current round of validation sims.

I think the only way we could get a test in here that does a useful check is by having a non-analytic beam model that we can use (since analytic beam models are relatively simple). We could maybe use the EllipticalBeam stuff, and a bit of ingenuity, to cook up a non-trivial polarized beam that would test the change to the einsum call. I don't think it's possible to test the beam normalization issue with an analytic beam.

So, what I'd do about the peak normalization (if it really is required) is just raise an error. That means the user has to do their own work to set the right normalization, but at least it won't silently change their beam, and they can do it in a memory-proper way.
As for tests... hmmm. Not sure. I do think it'd be great to have a test to prove that we did the right thing here. Maybe with the EllipticalBeam as you suggest.

Regarding the test, it looks like there's one of Nic's simulated beam hosted on pyuvdata. I can probably cook up a test using that. Hopefully it's as simple as parametrizing the existing tests and maybe adding a few lines of code.

Some updates regarding testing the change to the visibility calculation.
I made a small, downsampled, peak-normalized version of the Nic Fagnoni dipole e-field beam model and placed it in a new data directory in the testing directory. It is about 2.5 MB. This is the beam used to test against pyuvsim in the non-analytic beam case.
The polarized, non-analytic beam test case passes with the same tolerances previously set for the analytic case (0.05% relative difference, 0.0005 absolute difference), but the unpolarized, non-analytic beam case needs a bit more wiggle room: 1% relative difference is about the lowest I could get it. I have not dug deeply into the issue, but this is something the validation team should look into further.
Anecdotally, it looks like the autocorrelations are purely real, which certainly was not the case with the way the call to einsum was previously formatted.
Finally, it looks like there's an issue with the path that I haven't encountered before. On a developer install, this test should work fine, but I believe the site packages that are installed do not contain any of the test data or any way to retrieve the test data. If someone could instruct me on how to fix this, or if someone wants to go ahead and fix it themselves, then it would be greatly appreciated.


Problem with local replays saving.

I've been playing with lilsidlil player, and he asked me about: do i know anything about that replays are not saving at all on local machine?
Well, i've asked for logs and what i've found:
2020-04-22 21:17:18.282  WARN 14948 --- [Thread-1114] com.faforever.client.game.GameService    : Can't find 11556313 in gameInfoBean map
2020-04-22 21:17:29.974  INFO 14948 --- [Thread-1115] c.f.client.fa.relay.ice.IceAdapterImpl   : ICE adapter terminated normally
2020-04-22 21:17:30.259  INFO 14948 --- [pool-3-thread-590] com.faforever.client.game.GameService    : Forged Alliance terminated with exit code 0

Where 11556313 is the ID of the game.
I supose problem is in: /faf-downlords-client/src/main/java/com/faforever/client/game/GameService.java

  /**
   * Actually starts the game, including relay and replay server. Call this method when everything else is prepared
   * (mod/map download, connectivity check etc.)
   */
  private void startGame(GameLaunchMessage gameLaunchMessage, Faction faction, RatingMode ratingMode) {
    if (isRunning()) {
      log.warn("Forged Alliance is already running, not starting game");
      return;
    }

    stopSearchLadder1v1();
    int uid = gameLaunchMessage.getUid();
    replayServer.start(uid, () -> getByUid(uid)) // <<< HERE!
        .thenCompose(port -> {
          localReplayPort = port;
          return iceAdapter.start();
        })

Unfortunately can't tell you more.
Log is here:
downlords-faf-client.log

It's fixed in current RC afaik.

Yes, this is fixed in 1.1.6.


rocky: add MARINe Pisaster data

Would be great if you could work on making the time series plots for Pisaster (PISOCH in the seastarkat count data).
Here is a plot that I made in excel using this dataset for the OCNMS meeting as reference:

Also interested in KATTUN  Black Katy Chitons (Katharina tunicata)

sscount
Processing MARINe_sscount_32ad_18f5_c37e.csv.
Species
What are these other species?
Only know PISOCH Ochre Seastar (Pisaster ochraceus)
sscount_spp.csv:

species_code
target_assemblage
n_rows

ASTSER
sea_star
165

DERIMB
sea_star
198

EVATRO
sea_star
156

HENSPP
sea_star
387

KATTUN
sea_star
679

LEPTAS
sea_star
430

ORTKOE
sea_star
3

PATMIN
sea_star
674

PISBRE
sea_star
130

PISGIG
sea_star
653

PISOCH
sea_star
2415

PYCHEL
sea_star
347

STRFRA
sea_star
149

STRPUR
sea_star
151

UNIDEN
sea_star
2

Here are species lists:

longtermprotocol.pdf

Table 4. Standardized Names for Target Species Plots

biodiversityprotocol.pdf
biodiversity-species-list.pdf

method_code
Do we use all the methods? So far assuming yes.
sscount_spp_methods.csv, filter(species_code = "PISOCH"):

species_code
method_code
n_rows

PISOCH
BT
55

PISOCH
BT25
158

PISOCH
GSES
552

PISOCH
IP
1306

PISOCH
TS30
344

Here are the updates by sanctuary to Rocky Shore > Ochre stars:

CINMS - island avg

MBNMS - many sites

OCNMS


Shows List feature

In this pull request:

Added http util module.
Added shows API consumer.
Added showCard and showList components.
Added button element styling.

Great @teckim I think we can merge now

Thank you @assadounto let's merge it


Add missing proofs of properties of repeated receiving

This will ultimately resolve #15.

I just experimented with constructing a more convenient coinduction rule for repeated_receive. I came to the conclusion that we should stick to repeated_receive.coinduct, but along the way came up with a proof of adapted_after_repeated_receive, which I strongly suggest to adopt:
lemma adapted_after_repeated_receive:
  shows "(A ▹⇧∞ x. 𝒫 x) « ℰ = A « ℰ ▹⇧∞ x. 𝒫 x « ℰ"
proof
  fix e
  show "((A ▹⇧∞ x. 𝒫 x) « ℰ) e = (A « ℰ ▹⇧∞ x. 𝒫 x « ℰ) e"
    by
      (subst (1 2) repeated_receive_proper_def, coinduction rule: repeated_receive.coinduct)
      (
        use adapted_after_receive adapted_after_parallel in ‹
          simp,
          subst (3 4) repeated_receive_proper_def,
          auto intro: repeated_receive.cong_intros
        ›
      )
qed

A more administrative remark: Please take care to keep the subject lines of commit messages within the size restriction mandated by CONTRIBUTING.md, which was chosen to ensure nice rendering in GitHub.

I just experimented with constructing a more convenient coinduction rule for repeated_receive. I came to the conclusion that we should stick to repeated_receive.coinduct, but along the way came up with a proof of adapted_after_repeated_receive, which I strongly suggest to adopt:
lemma adapted_after_repeated_receive:
  shows "(A ▹⇧∞ x. 𝒫 x) « ℰ = A « ℰ ▹⇧∞ x. 𝒫 x « ℰ"
  by
    (
      standard,
      subst (1 2) repeated_receive_proper_def,
      coinduction rule: repeated_receive.coinduct
    )
    (
      use adapted_after_receive adapted_after_parallel in simp,
      subst (3 4) repeated_receive_proper_def,
      auto intro: repeated_receive.cong_intros
    )

Addressed in fa7bc881ee60fb1b2729987d600c0a6e88612382, please verify.

Addressed in fa7bc881ee60fb1b2729987d600c0a6e88612382, please verify.

Looks good to me. :slightly_smiling_face:

The inner_repeated_receive_redundancy lemma is the only remaining one to prove as part of this pull request.


symfony-cli prefers host's PHP binaries over binaries installed by Nix

Describe the bug
Given you have PHP installed on your host and one installed in your Nix shell + symfony-cli, eg. with these packages [pkgs.php82 pkgs.symfony-cli], running symfony serve will always prefer PHP installed by host. This is not an issue with Nix per se but symfony-cli, but I suggest here that symfony-cli package should be patched so that this does not happen.
Steps To Reproduce
Steps to reproduce the behavior:

In Terminal 1

root@a8c5cfdd65aa:/# echo foo > index.php
root@a8c5cfdd65aa:/# which php
/usr/bin/php
root@a8c5cfdd65aa:/# php -v
PHP 8.1.2-1ubuntu2.11 (cli) (built: Feb 22 2023 22:56:18) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.2-1ubuntu2.11, Copyright (c), by Zend Technologies
root@a8c5cfdd65aa:/# nix repl
Welcome to Nix 2.13.3. Type :? for help.

nix-repl> :l <nixpkgs>

nix-repl> :u buildEnv {name="reproducer"; paths = [php82 symfony-cli];}

[nix-shell:/]# php -v
PHP 8.2.5 (cli) (built: Apr 11 2023 16:16:23) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.5, Copyright (c) Zend Technologies
    with Zend OPcache v8.2.5, Copyright (c), by Zend Technologies

[nix-shell:/]# which php
/nix/store/sw4nmv0c60wqd0hrksj2vm2l1384lya8-reproducer/bin/php
[nix-shell:/]# symfony serve

 [OK] Web server listening
      http://<IP_ADDRESS>:8000

In terminal 2

root@a8c5cfdd65aa:/# curl --head localhost:8000
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Date: Fri, 28 Apr 2023 14:15:51 GMT
Host: localhost:8000
X-Powered-By: PHP/8.1.2-1ubuntu2.11

Expected behavior
Curl statement should return PHP/8.2.5, as that's the one installed by Nix. Not 8.1.2.
Additional context
Current workaround is replacing symfony-cli with
(pkgs.symfony-cli.overrideAttrs (finalAttrs: previousAttrs: {
    nativeBuildInputs = previousAttrs.nativeBuildInputs ++ [ pkgs.makeWrapper ];
    # gotta convince symfony-cli to use php binary installed in this project and not system php
    postInstall = "wrapProgram $out/bin/symfony-cli --set PATH ${php}/bin";
}))

which strips out everything $PATH except ${php}/bin
Notify maintainers
@drupol
Metadata
Please run nix-shell -p nix-info --run "nix-info -m" and paste the result.
[user@system:~]$ nix-shell -p nix-info --run "nix-info -m"
 - system: `"aarch64-linux"`
 - host os: `Linux 6.1.26-orbstack-00155-g7f01e11590de, Ubuntu, 22.04.2 LTS (Jammy Jellyfish), nobuild`
 - multi-user?: `yes`
 - sandbox: `no`
 - version: `nix-env (Nix) 2.13.3`
 - nixpkgs: `/nix/store/d6yq7lszskxlpx9ijw56l50sgncbn852-source

That does not make sense. Why does Symfony not use the correct PHP from PATH? Any proper PATH respecting program should return the same thing as which.

I agree after making a couple of tests, I believe that wrapping the binary with the PHP path is not necessary... Check the screenshot in https://github.com/NixOS/nixpkgs/pull/228766#issuecomment-1528021458

I don't know, but this is what they use for discovery of php versions https://github.com/symfony-cli/phpstore. I've not dig depeer than having a brief looks though. And I have to remind that this is about symfony serve command. symfony php command does look to be honoring $PATH correctly.

And I have to remind that this is about symfony serve command. symfony php command does look to be honoring $PATH correctly.

Does this means that symfony-cli does not employ the same mechanism for locating php in the symfony serve and symfony php commands? which seems totally uncommon. It would be nice to have the confirmation from one of the maintainers.

I've prepared a patch at https://github.com/symfony-cli/phpstore/pull/10. I hope they will merge it soon. Otherwise we should consider adding a patch for this here.

I think this issue can be closed now.

Yup, thanks again!

After thinking twice, the issue will be definitely fixed as soon as you publish a new tag and we provide an update in Nix, I'll leave it open in the meantime.

5.5.7 has been released now.

PR is made, I'll wait for the CI to be done before merging and closing this issue.


save the privatekey

Is there a feature that can save/export private key easily?

It's merged in #38
Waiting for new crate release

@penumbra23 It looks like #38 only provides one direction (parse/from/import from a public or private key file). What I think would be nice is to be able to have functions like to_pkcs[1|8] and try_to().
For example, given an RSAPublicKey, be able to output:
-----BEGIN PUBLIC KEY-----
MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAK5Z7jk1ql5DquRvlPmFgyBDCvdPQ0T2
si2oPAUmNw2Z/qb2Sr/BEBoWpagFf8Gl1K4PRipJSudDl6N/Vdb2CYkCAwEAAQ==
-----END PUBLIC KEY-----

so that it (and an RSAPrivateKey) can be saved to disk.

Yup sorry, my bad. Thought that this would go in the same feature (which seems to be logical). But for any purpose you can generate the keys somewhere offline, save it and import.

But for any purpose you can generate the keys somewhere offline, save it and import.

My use case is I generate the keys in my app using this lib like so:
let private_key = RSAPrivateKey::new(&mut rng, bits).expect("failed to generate a key");
let public_key: RSAPublicKey = private_key.into();

then I would like to persist to disk so that next time the app starts up, I can check if keys exist and use them (instead of generating a new set). Instead of using a built in Rust serializer, I would prefer to write out in ASN.1 notation.

We have full pkcs1 & pcks8 support now, so closing this.


Is is possible to generate a percentage center point instead of absolute boundary?

Hi, @jwagner
This is an awesome library, thank you for creating it!
I am considering to use the library in production environment, with responsiveness support. However, the absolute cropped boundary numbers are not very friendly to responsiveness. If the calculation result is a center point with percentage, we can use the following CSS styles to stick to that center point, then it will show good in PC view or mobile view.
const style = {
  backgroundImage: `url("${imageURL}")`,
  backgroundPosition: `${centerPoint.x}% ${centerPoint.y}%`
}

Now, I am calculating the central point of the crop result as the center point. That is working but not really accurate.

I found another workaround, set the width=height=50px (or small), minScale=0,5 (or small). It will generate a square cropped area, use the central point of this area as center point. The result is more making sense.

just take x/width*100 to get %.


Aggregations missing in Paginator

Hi,
thank you very much for this wonderful package. I started developing the same thing, but this is much better and more sophisticated.
There is a small "bug" in your paginator. It is using parents "toArray" method that of course doesn´t know anything about aggregations. Maybe you could override the function this way:
public function toArray()
    {
        return [
            'total' => $this->total(),
            'per_page' => $this->perPage(),
            'current_page' => $this->currentPage(),
            'last_page' => $this->lastPage(),
            'next_page_url' => $this->nextPageUrl(),
            'prev_page_url' => $this->previousPageUrl(),
            'from' => $this->firstItem(),
            'to' => $this->lastItem(),
            'data' => $this->items->toArray(),
            'aggregations' => $this->result->aggregations(),
        ];
    }

yup can you submit a pull request?


WINDOW operation

https://github.com/arangodb/arangodb/pull/12874

@Simran-B : this can be merged now, as the underyling PR was merged upstream.


Add precondition to metadata updates to fail on conflicts

The mechanism used to test conflicts is non-standard as it relies on a callback in the production code for the test to inject a conflicting modification.  I'm open to suggestions for cleaner alternatives.
Note: I will rebase after the Cosmos change feed changes are committed.

Codecov Report

Merging #1380 into master will decrease coverage by 0.04%.
The diff coverage is 40%.

@@             Coverage Diff              @@
##             master    #1380      +/-   ##
============================================
- Coverage     72.09%   72.05%   -0.05%
- Complexity     6799     6807       +8
============================================
  Files           489      490       +1
  Lines         38547    38738     +191
  Branches       4906     4931      +25
============================================
+ Hits          27791    27913     +122
- Misses         9420     9471      +51
- Partials       1336     1354      +18

Impacted Files
Coverage Δ
Complexity Δ

...ava/com.github.ambry.cloud/azure/AzureMetrics.java
100% <100%> (ø)
1 <0> (ø)
:arrow_down:

...ithub.ambry.cloud/azure/AzureBlobDataAccessor.java
75.16% <12.5%> (-3.46%)
21 <0> (ø)

...m.github.ambry.cloud/azure/CosmosDataAccessor.java
62.92% <42.85%> (-10.93%)
17 <4> (ø)

...ithub.ambry.cloud/azure/AzureCloudDestination.java
73.8% <50%> (+0.51%)
30 <0> (ø)
:arrow_down:

...ithub.ambry.commons/LoggingNotificationSystem.java
45.16% <0%> (-13.18%)
9% <0%> (ø)

...va/com.github.ambry.replication/PartitionInfo.java
80% <0%> (-10.91%)
8% <0%> (+3%)

...b.ambry.network/BlockingChannelConnectionPool.java
73.68% <0%> (-2.11%)
11% <0%> (-1%)

...c/main/java/com.github.ambry.network/Selector.java
78.21% <0%> (-1.84%)
77% <0%> (-2%)

...thub.ambry.clustermap/CompositeClusterManager.java
59.72% <0%> (-1.71%)
22% <0%> (ø)

...java/com.github.ambry.network/SSLTransmission.java
70.46% <0%> (-1.54%)
76% <0%> (-1%)

... and 16 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 57d5eab...0ed22a5. Read the comment docs.


Update webpack.config.js

This may help during debugging

fix your conflicts, then your pr might get approved.


Execute not working

Hi, I'm still having trouble with the execute function. It's not actually executing anything at all.
The code I'm using is:
>>> from pylxd import client
>>> lxdClient = client.Client()
>>> containerName = "snmp2"
>>> containerExec = ["mkdir /go"]
>>> container = lxdClient.containers.get(containerName)
>>> container.execute_with_result(containerExec)
ContainerExecuteResult(exit_code=255, stdout=u'', stderr=u'')

I've tried execute as well as execute_with_result.
Using the lxc command works fine:
lxc exec snmp2 -- mkdir /go
It's on Ubuntu 16.04 with the standard Ubuntu versions of LXC/LXD, and the latest pylxd from pip.
In the /var/log/lxd/lxd.log file the following lines are created, the first two from pylxd, the second from 'lxc exec':
t=2016-11-22T15:02:29+0000 lvl=info msg="Executing command" environment="[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]" args="[/usr/bin/lxd forkexec snmp2 /var/lib/lxd/containers /var/log/lxd/snmp2/lxc.conf -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -- cmd mkdir /go]"
t=2016-11-22T15:02:30+0000 lvl=info msg="Executed command" environment="[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin]" args="[/usr/bin/lxd forkexec snmp2 /var/lib/lxd/containers /var/log/lxd/snmp2/lxc.conf -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin -- cmd mkdir /go]" exit_status=255

t=2016-11-22T15:03:06+0000 lvl=info msg="Executing command" environment="[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/root TERM=xterm USER=root]" args="[/usr/bin/lxd forkexec snmp2 /var/lib/lxd/containers /var/log/lxd/snmp2/lxc.conf -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/root TERM=xterm USER=root -- cmd mkdir /go]"
t=2016-11-22T15:03:06+0000 lvl=info msg="Executed command" environment="[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/root TERM=xterm USER=root]" args="[/usr/bin/lxd forkexec snmp2 /var/lib/lxd/containers /var/log/lxd/snmp2/lxc.conf -- env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOME=/root TERM=xterm USER=root -- cmd mkdir /go]"

Any idea how I debug this?

Your containerExec needs to be an array of strings split on spaces. I recommend using shlex.split:
import pylxd
import shlex

client = pylxd.Client()
container = client.containers.get('snmp2')
container.execute_with_result(shlex.split('mkdir /go'))

That did it, thanks :-)
Do you know if I have to split environment variables too?

If you include environment variables as part of the command, they need to be split. If you use the env kwarg to pass in environment variables, then you can use a python dict.
# as part of the command
container.execute_with_result(shlex.split('LANGUAGE=en_US mkdir /go'))

# as kwarg
container.execute_with_result(shlex.split('mkdir /go'), env={'LANGUAGE': 'en_US'})

# bonus - copy local env
modified_env = os.environ.copy()
modified_env['LAUNGUAGE'] = 'en_US'
container.execute_with_result(shlex.split('mkdir /go'), env=modified_env)

Ahh yes. I was looking to use kwarg option as go needs some environment variables to run.
Thanks for your help :-)

I think I'm having troubles with environment variables again. I'm happy to use them as part of the command which you listed, but it doesn't seem to be working. I'm trying to get an unattended apt update working, and it was hanging because it was waiting for user input. I'm not sure if it's a regression (I updated via pip while trying to figure out what was going on) but it's failing for me.
# the actual command I'm trying to get working:
container.execute(shlex.split('DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade'))

# the log entry that appears:
lxc<PHONE_NUMBER>2938.422 ERROR    lxc_attach - attach.c:lxc_attach_run_command:1292 - No such file or directory - Failed to exec "DEBIAN_FRONTEND=noninteractive".

# testing out your previous code to see if that errors:
>>> container.execute(shlex.split('LANGUAGE=en_US mkdir /go'))
ContainerExecuteResult(exit_code=255, stdout=u'', stderr=u'')

# its log message
lxc<PHONE_NUMBER>3159.154 ERROR    lxc_attach - attach.c:lxc_attach_run_command:1292 - No such file or directory - Failed to exec "LANGUAGE=en_US".

Any idea what I'm doing wrong here?
Ubuntu 16.04 LXD from standard repos, pylxd (2.2.2) from pip.

@madbobmcjim LXD doesn't execute those commands through a shell, so those leading env variables are meaningless to it and interpreted as the binary name instead (which obviously won't work).
I think you want:
 container.execute(shlex.split('env DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical apt-get -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" upgrade'))

That got it, thanks. :-)