UND_ERR_SOCKET","message":"other side closed" - but it's open. It really is

Preflight Checklist

[x] I have installed the latest version of Storage Explorer.
[x] I have checked existing resources, including the troubleshooting guide and the release notes.
[x] I have searched for similar issues.

Storage Explorer Version
1.35.0 (100)
Regression From
No response
Architecture
x64
Storage Explorer Build Number
20240810.1
Platform
Windows
OS Version
Windows 11
Bug Description
Unable to retrieve child resources
ProducerError:{
  "name": "Node Fetch Error",
  "message": "{\"name\":\"Node Fetch Error\",\"cause\":{},\"code\":\"UND_ERR_SOCKET\"}"
}

after launching with "--ignore-certificate-errors"
 C:\Program Files\Microsoft Azure Storage Explorer> .\StorageExplorer.exe --ignore-certificate-errors

Steps to Reproduce

Launch Storage Explorer from command line:  C:\Program Files\Microsoft Azure Storage Explorer> .\StorageExplorer.exe --ignore-certificate-errors
Connect Dialog
No proxy, https, 10251,10252,10253

Click on Blob Containers

Actual Experience

Error with UND_ERR_SOCKET
Expected Experience
Would connect to  Microsoft.Azure.Cosmos.Emulator.exe seamlessly and I can browse blob storage
Additional Context
The Emulator is running:
I started it from the command line as simply: C:\Program Files\Azure Cosmos DB Emulator>Microsoft.Azure.Cosmos.Emulator.exe
I pasted the emulator Account Key into Storage Explorer Connect
I started Explorer as follows:StorageExplorerLogs_activity-log_28284.log

The log files contain a lot of:
[2024-10-23T18:04:15.946Z] (blob-extension:56144) <ERRO> HttpClient threw while making API call for BlobService.getAccountInfo
  GET https://<IP_ADDRESS>:10251/devstoreaccount1?comp=properties&restype=account
  Credential used: Account name and key - account name: devstoreaccount1, account key: ******, keyName: undefined
  RequestId: 45c22744-5b73-4503-baaa-37e9144318de, Date sent: Wed, 23 Oct 2024 18:04:15 GMT, ApiVersion: 2019-07-07, ProxySettings: undefined
  Error: {"name":"Node Fetch Error","cause":{},"code":"UND_ERR_SOCKET","message":"other side closed"}

@owebeewan You're trying to connect to an CosmosDB emulator, correct? Storage Explorer does not support connecting to CosmosDB resources and only supports connecting to an Azure Storage resources or emulators. If you'd like something for accessing CosmosDB resources, you might want to try their dedicated application


Adapt GitHub new issue template

Why are these changes needed?
Adapt Github new issue form template, preview: https://github.com/LiuHaiYang/incubator-linkis/issues/new/choose
Related issue number
#1061
Checks

linkis Component
...

@peacewong @wushengyeyouya @clay4444 Can you help to review this pr?

@peacewong @wushengyeyouya @clay4444 Can you help to review this pr?

ok Thanks!

@LiuHaiYang @clay4444 Thank you


jar deployed to central maven repository is empty

lazy val mercadopagoSDK = Seq("com.mercadopago" % "java-sdk" % "1.0.2")

The version 1.0.6 solve the issue.


What if you're not using GitHub

I'm using Azure DevOps and trying to use a variable group from Azure DevOps, in and Azure DevOps pipeline, with the yml file in an Azure DevOps repository. I find it more than a bit unusual that the documentation for this software assumes you're using a completely different paid service for a concept that this software provides.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 0e5c4674-9e05-1381-8202-5225afd95e33
Version Independent ID: 62b343f9-9b2a-0be0-2582-e3795e9cdef5
Content: Azure CLI sample for Azure Pipelines and variable groups - Azure Pipelines
Content Source: docs/pipelines/scripts/cli/pipeline-variable-group-secret-nonsecret-variables.md
Service: azure-devops-pipelines
Sub-service: azure-devops-pipelines-scripts
GitHub Login: @juliakm
Microsoft Alias: jukullam

@ScottSlaughterBBNA -- Scott, thank you for your feedback.  This repo is solely for documentation issues, and this seems product-related.  Please add it here:

Developer Community

cc @juliakm for awareness
I am closing this issue now.  You are welcome to @ mention me for any followup.  We hope to hear from you again.


PWA-285 HTML widget now considers defaultPadding setting

Pull Request Test Coverage Report for Build 605

0 of 0 (NaN%) changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 41.452%

Totals

Change from base Build 603:
0.0%

Covered Lines:
1857

Relevant Lines:
4378

💛  - Coveralls


add dynamic filters to members

Add drop downs in the members screen (at least first name, last name) to dynamically filter the list of members

fixed in https://github.com/leolivier/cousins-matter/pull/31


Feature request: log level management for Gas and Electricity Capacity

The Log Level characteristic on Electricity is super handy! 🤩
But unfortunately I cannot do the same for Gas, which is why I have entries like this:
[2/23/2023, 6:09:58 PM] [P1] Gas: Total Consumption: set to 553.963 m³ (from 553.896 m³)
[2/23/2023, 6:10:24 PM] [Sun] Sun is -0.1925437655412774 high at<PHONE_NUMBER>7488768
[2/23/2023, 6:15:24 PM] [Sun] Sun is -0.9500694069468312 high at<PHONE_NUMBER>2025665
[2/23/2023, 6:16:27 PM] [P1] Gas: Total Consumption: set to 554.051 m³ (from 553.963 m³)
[2/23/2023, 6:20:00 PM] [P1] Gas: Total Consumption: set to 554.061 m³ (from 554.051 m³)

… I'd rather not have those.
I first thought that this sole log level affected all accessories, but that appears to not be the case. I'm running Homebridge with debug mode off (no -D), so that can't be the reason for the above either.
A quick search in the codebase suggests this is why it's happening:
class Electricity extends P1Accessory {
  constructor (platform, data, name = 'Electricity') {
    super(platform, name, data)
    this.service = new P1Service.Electricity(this, data)
    if (name === 'Electricity') {
      this.manageLogLevel(this.service.characteristicDelegate('logLevel'))
    }

combined with this code in homebridge-lib:
  manageLogLevel (delegate, forPlatform = false) {
…
    if (forPlatform) {
      try {
        // TODO handle multiple delegates for platform log level
        //      now platform log level is linked to first delegate only

→ https://github.com/ebaauw/homebridge-lib/blob/v6.3.10/lib/AccessoryDelegate.js#L304-L323
So it seems that the plan is to offer a single platform-wide log level? I'd be fine with individual toggles too — and in fact, that may even be preferable! Perhaps one would be observing Gas consumption closely but not Electricity, or vice versa!

So it seems that the plan is to offer a single platform-wide log level?

Yes, the Log Level of the platform and of the other accessories are linked to that on the Electricity accessory.
I could do a separate Log Level per accessory, but there's only one interface to the P1 port.  I still haven't figured out how to expose a Log Level for the cross-accessory functions of the plugin (for debug messages on the P1 telegrams) vs a Log Level for an accessory (for the log messages on HomeKit changes and debug messages on changes to the corresponding device).

[2/23/2023, 6:09:58 PM] [P1] Gas: Total Consumption: set to 553.963 m³ (from 553.896 m³)

These are regular log messages (level 1); set Log Level to 0 to suppress them.

These are regular log messages (level 1); set Log Level to 0 to suppress them.

That's what I did. The Electricity Log Level is set to 0, but Gas and Electricity Delivered continue to log as if it's still at 1!

Yes, the Log Level of the platform and of the other accessories are linked to that on the Electricity accessory.

That is, they were originally, but it seems that's broken.

Given a7bb3de's change to Eve history support … is it safe for me to update? What will the consequences be for the Eve app? Any special steps I need to take?

Fixed in v1.3.4.


Open image file on long tap

Fixes #5
Note that I had to use some Obsidian internal API because I didn't find how to do this using published API. I am not a mobile developer so probably this code requires careful code review

I just tested it.

Images embedded from an online URL can't be shared - every option the OS gave me resulted in an error.
When you touch an image Obsidian brings makes it fullscreen and blurs the background. From this you can use two finger gestures to zoom into a part of the image. Now every zoom brings up the share dialog too.

@NomarCub I fixed those two things you found


Add Wordlist::List.[] for Array initialization

Add a Wordlist::List.[] method for initializing a list with literal words:
Wordlist::List["foo", "bar", "baz"]

Implemented in d9b7088adbd2b14378b7978cf50ce23bd1dd0017.


Unable to store mysql query result inside a variable

I am trying to query user by email and save the result inside a variable. I tried using await and async, callback and promise but
none of them actually work.
`const checkEmailUsed = (email) => {
let sql = "SELECT * FROM users_signup WHERE user_email = ? LIMIT 1";
return new Promise((resolve, reject) => {
conn.query(sql, email, (err, res) => {
if (err) {
reject(err);
return;
}
resolve(res[0]);
});
conn.end();
});
};
var user = [];
<EMAIL_ADDRESS>.then((res) => user.push(res))
.catch((err) => console.log(err));
console.log(user); // Still []`

The console.log is executed before the promise is fulfilled. This should work:
const checkEmailUsed = (email) => {
  let sql = "SELECT * FROM users_signup WHERE user_email = ? LIMIT 1";
  return new Promise((resolve, reject) => {
    conn.query(sql, email, (err, res) => {
      if (err) {
        reject(err);
        return;
      }
      resolve(res[0]);
    });
    conn.end();
  });
};

var user = [];
<EMAIL_ADDRESS>  .then((res) => user.push(res))
  .then(() => console.log(user))
  .catch((err) => console.log(err));

The console.log is executed before the promise is fulfilled. This should work:
const checkEmailUsed = (email) => {
  let sql = "SELECT * FROM users_signup WHERE user_email = ? LIMIT 1";
  return new Promise((resolve, reject) => {
    conn.query(sql, email, (err, res) => {
      if (err) {
        reject(err);
        return;
      }
      resolve(res[0]);
    });
    conn.end();
  });
};

var user = [];
<EMAIL_ADDRESS>  .then((res) => user.push(res))
  .then(() => console.log(user))
  .catch((err) => console.log(err));

Thank you very much sir. Thank you
On Thu, Jan 21, 2021 at 2:11 AM Marco Baumgartl<EMAIL_ADDRESS>wrote:

The console.log is executed before the promise is fulfilled. This should
work:
const checkEmailUsed = (email) => {
let sql = "SELECT * FROM users_signup WHERE user_email = ? LIMIT 1";
return new Promise((resolve, reject) => {
conn.query(sql, email, (err, res) => {
if (err) {
reject(err);
return;
}
resolve(res[0]);
});
conn.end();
});};
var user =<EMAIL_ADDRESS>.then((res) => user.push(res))
.then(() => console.log(user))
.catch((err) => console.log(err));
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mysqljs/mysql/issues/2458#issuecomment-764527349, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AJOBECIEMRMZS6W3UXHUGPDS274URANCNFSM4WKFMN4A
.

Thank you very much sir. Thank you
On Thu, Jan 21, 2021 at 2:11 AM Marco Baumgartl<EMAIL_ADDRESS>wrote:

The console.log is executed before the promise is fulfilled. This should
work:
const checkEmailUsed = (email) => {
let sql = "SELECT * FROM users_signup WHERE user_email = ? LIMIT 1";
return new Promise((resolve, reject) => {
conn.query(sql, email, (err, res) => {
if (err) {
reject(err);
return;
}
resolve(res[0]);
});
conn.end();
});};
var user =<EMAIL_ADDRESS>.then((res) => user.push(res))
.then(() => console.log(user))
.catch((err) => console.log(err));
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/mysqljs/mysql/issues/2458#issuecomment-764527349, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/AJOBECIEMRMZS6W3UXHUGPDS274URANCNFSM4WKFMN4A
.

@mikias21 can you mark this issue as close?


How to turn off?

Hey, I was wondering how you would suggest to stop running the software if I decided to. I'm enjoying the code so far!
Thanks!

What OS are you in? On linux you can run
systemctl stop uni-sync
and (if you want to disable autostart)
systemctl disable uni-sync
In windows, go to the %USERPROFILE%\Start Menu\Programs\Startup and remove the executable from the folder. Either restart the machine or manually terminate it in task manager.
As it stands, there's no GUI interface to close it. I am working on a v2 version of this software that supports all the controllers and provides a simple interface using Tauri. Its still a WIP and wont be complete for another week or two.

I'm on Ubuntu, however I've run both systemctl stop and disable but after restarting the computer still loads the fan profile as normal. The only reason I'm trying to disable in the first place is because even the quiet mode has my fans running at around 1300 rpm for some reason. I have the infinity version of the fans which has fan hub version a102 so that may be the cause.

That hub is unlikely to work, I uncovered some varying changes between the hubs while building the FanControl plugin. Have you verified that the process is actually running using the top command?
If it's not running, the controllers remember what they've been told, that is unless your PC loses power or it receives a new command. If you unplug your computer from power for 10 seconds the controller will reset to a factory configuration. Otherwise, you'll need to open L-Connect and send a new command to it.

The process was no longer running, however, I had to clear the motherboard cache by clearing the CMOS for the fans to return to normal.

What OS are you in? On linux you can run systemctl stop uni-sync and (if you want to disable autostart) systemctl disable uni-sync
In windows, go to the %USERPROFILE%\Start Menu\Programs\Startup and remove the executable from the folder. Either restart the machine or manually terminate it in task manager.
As it stands, there's no GUI interface to close it. I am working on a v2 version of this software that supports all the controllers and provides a simple interface using Tauri. Its still a WIP and wont be complete for another week or two.

How is the update coming, would love to help out if you need it.

I have pushed an update to Uni-Sync to add additional support. Please test and let me know if it's working with your controller (include controller version)

Works great now, thanks. I have the a102 on 4 channels and they are all working correctly. Nice work.


[BUG]: [UsePythonVersion] fails when it needs to install a python version which is not already on tools cache

Task name
UsePythonVersion@0
Task version
0
Environment type (Please select at least one enviroment where you face this issue)

[ ] Self-Hosted
[X] Microsoft Hosted
[ ] VMSS Pool
[ ] Container

Azure DevOps Server type
dev.azure.com (formerly visualstudio.com)
Azure DevOps Server Version (if applicable)
No response
Operation system

Ubuntu linux 5.15.0-1045-azure
MAC mini 14.1 Darwin ARM64

Task log
Starting: [NEW] Use Python 3.11
==============================================================================
Task         : Use Python version
Description  : Use the specified version of Python from the tool cache, optionally adding it to the PATH
Version      : 0.230.0
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/tool/use-python-version
==============================================================================
##[warning]You should provide GitHub token if you want to download a python release. Otherwise you may hit the GitHub anonymous download limit.
Downloading: https://github.com/actions/python-versions/releases/download/3.11.6-6388688740/python-3.11.6-linux-20.04-x64.tar.gz
Extracting archive
/usr/bin/tar xC /mnt/vss/_work/_temp/a6a7bfd8-8b72-483e-8e18-4fe23960b389 -f /mnt/vss/_work/_temp/python-3.11.6-linux-20.04-x64.tar.gz
/usr/bin/bash ./setup.sh
Check if Python hostedtoolcache folder exist...
Creating Python hostedtoolcache folder...
Create Python 3.11.6 folder
Copy Python binaries to hostedtoolcache folder
Create additional symlinks (Required for the UsePythonVersion Azure Pipelines task and the setup-python GitHub Action)
Upgrading pip...
./python: error while loading shared libraries: libpython3.11.so.1.0: cannot open shared object file: No such file or directory
##[error]Failed to download Python from the Github Actions python registry (https://github.com/actions/python-versions). Error: Error: The process '/usr/bin/bash' failed with exit code 127
##[error]Version spec 3.11 for architecture x64 did not match any version in Agent.ToolsDirectory.
Versions in /mnt/vss/_work/_tool:

And similarly it's trying to use "sudo" for installing on Darwin MAC mini and hence failing.

Relevant log output
shell
Python 3.11 should be installed and used.
As per https://stackoverflow.com/a/56296998 libpython3.x-dev as well needs to be installed or added on the path, after the unzip/untar step or as part of setup.sh execution
Both of these are remote machine in CI and the task fails within itself, what prevention or setup at the time of retry we can do to fix our side until this is fixed at the task level itself?
Aditional info
If this is because of these agent's are self-hosted then as per the wiki, even download should not have worked if so.
Also even after the task fails, I can see the ToolsCache has got the folder structure as mentioned in the doc
Still, the task retry denies with not found in toolsCache
so how do I make it work for a self-hosted agent?

We are seeing succesfull download but failure during installation.
No response

Hi! I am having the same problem. any idea how long such a change normally take (or could take)? 1 year? one month? one week? Thanks a lot!

Hi @poojashahms, thank you for reporting!
As mentioned in the documentation, the UsePythonVersion is guaranteed to work out of the box only on hosted agents, however, it can also work on self-hosted machines in case the agent architecture matches with specific binary on arch and platform fields from the versions-manifest.
The task detects the platform version using the lsb_release or tries to check the content of VERSION_ID from /etc/os-release if the previous option is unavailable on Linux systems, uses sw_vers -productVersion to get the platform version on Darwin platforms, that's why the download is working on Ubuntu linux 5.15.0-1045-azure - the task detect the system as Ubuntu-20.04, and tries to use the published Python 3.11.6
      {
        "filename": "python-3.11.6-linux-20.04-x64.tar.gz",
        "arch": "x64",
        "platform": "linux",
        "platform_version": "20.04",
        "download_url": "https://github.com/actions/python-versions/releases/download/3.11.6-6388688740/python-3.11.6-linux-20.04-x64.tar.gz"
      },

The problem is that published binaries were built on hosted Ubuntu-20.04 specifically for hosted Ubuntu-20.04 machines and the main difference here is the path to Python shared libs.
The Linux error mentioned in the description:
./python: error while loading shared libraries: libpython3.11.so.1.0

is happening while executing the latest stages of setup.sh from the downloaded package
./python -m ensurepip
./python -m pip install --ignore-installed pip --disable-pip-version-check --no-warn-script-location --root-user-action=ignore

most likely caused because Python try to use the shared libraries from the incorrect location. The binaries were built using the /opt/hostedtoolcache/Python/$VERSION/$ARCH as the default location, so they will try to use the shared libs from the same path.
Just to be sure - could you please confirm that you set up the custom AGENT_TOOLSDIRECTORY environment variable, and what path did you use?
In case the path differs from the default path used on the Hosted machines (/opt/hostedtoolcache/* for Linux, and /Users/runner/hostedtoolcache/* for MacOS) additional tweaks may be required:
Could you please try to update the LD_LIBRARY_PATH environment variable on your self-hosted machine so it will point to the location where the installed Python lib will be located, like Python/3.11.6/x64/lib/
You can use the following bash script, before the execution of the UsePythonVersion task:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/mnt/vss/_work/_tool/Python/3.11.6/x64/lib/

Hi @Alaeeala! The problem here is related to the Python Toolcache specifics on the self-hosted machines, and in this repo, we only maintain tasks that use the packages from the Toolcache - the task itself is working as expected, but the failure happens during the package installer execution - https://github.com/actions/python-versions/blob/main/installers/nix-setup-template.sh. We can provide a workaround, but unfortunately, we cannot provide an ETA for the updates in the mentioned repo (https://github.com/actions/python-versions), since this is outside of our area.
You can open a ticket on the https://github.com/actions/runner-images repo, in case you believe that current toolcache behavior on self-hosted machines should be reworked.

@vmapetr , very fast, direct and clear answers. Awesome, I will try the work around and set the LD_LIBRARY_PATH. Thanks a lot!

@Alaeeala glad that I can help!
You can simply set the pipeline environment variable named LD_LIBRARY_PATH in the UI editor with the following value
:{TOOLCACHE_PATH}/Python/{VERSION}/x64/lib/

Or add the following bash task in your YAML template:
  - task: Bash@3
    inputs:
      targetType: 'inline'
      script: |
        echo "##vso[task.setvariable variable=LD_LIBRARY_PATH;]:{TOOLCACHE_PATH}/Python/{VERSION}/x64/lib/"

Where the TOOLCACHE_PATH is the custom toolcache path, and VERSION is the required Python version used in the UsePythonVersion task. The complete path should look like this :/mnt/vss/_work/_tool/Python/3.11.6/x64/lib/ for example.

@poojashahms could you please use the mentioned workaround?

I'm going to close this issue, since the Toolcache packages behavior is outside of our area, please use the mentioned workaround to resolve the Python issue, and free to reopen the ticket if you have additional questions.

Sorry @vmapetr, I'm facing this specific issue with Azure DevOps even after I applied the workaround in the YAML template of the pipeline

Sorry @vmapetr, I'm facing this specific issue with Azure DevOps even after I applied the workaround in the YAML template of the pipeline

Same here, this is my yml
      - job: deploy_function_app
        displayName: Deploy Function App
        pool:
          name: ccoe-aks-linux-agent
        steps:
          - task: Bash@3
            inputs:
              targetType: "inline"
              script: |
                echo "##vso[task.setvariable variable=LD_LIBRARY_PATH;]:{TOOLCACHE_PATH}/Python/{VERSION}/x64/lib/"
          - task: UsePythonVersion@0
            displayName: "Set Python version to 3.11"
            inputs:
              versionSpec: "3.11.8"
              githubToken: <MY_TOKEN>
              architecture: "x64"
          - bash: |
              if [ -f extensions.csproj ]
              then
                  dotnet build extensions.csproj --output ./bin
              fi
              pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
            workingDirectory: $(functionAppWorkingDirectory)
          - task: ArchiveFiles@2
            displayName: "Archive files"
            inputs:
              rootFolderOrFile: "$(functionAppWorkingDirectory)"
              includeRootFolder: false
              archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
          - task: PublishBuildArtifacts@1
            inputs:
              PathtoPublish: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
              artifactName: "drop"
          - task: AzureFunctionApp@2
            inputs:
              azureSubscription: app-ai-devops-knowledgebot-dev-001
              appType: functionAppLinux
              appName: $(functionAppName)
              package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
              deploymentMethod: "auto"

Output from the self hosted agent

Thanks a lot

Sorry @vmapetr, I'm facing this specific issue with Azure DevOps even after I applied the workaround in the YAML template of the pipeline

Same here, this is my yml
      - job: deploy_function_app
        displayName: Deploy Function App
        pool:
          name: ccoe-aks-linux-agent
        steps:
          - task: Bash@3
            inputs:
              targetType: "inline"
              script: |
                echo "##vso[task.setvariable variable=LD_LIBRARY_PATH;]:{TOOLCACHE_PATH}/Python/{VERSION}/x64/lib/"
          - task: UsePythonVersion@0
            displayName: "Set Python version to 3.11"
            inputs:
              versionSpec: "3.11.8"
              githubToken: <MY_TOKEN>
              architecture: "x64"
          - bash: |
              if [ -f extensions.csproj ]
              then
                  dotnet build extensions.csproj --output ./bin
              fi
              pip install --target="./.python_packages/lib/site-packages" -r ./requirements.txt
            workingDirectory: $(functionAppWorkingDirectory)
          - task: ArchiveFiles@2
            displayName: "Archive files"
            inputs:
              rootFolderOrFile: "$(functionAppWorkingDirectory)"
              includeRootFolder: false
              archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
          - task: PublishBuildArtifacts@1
            inputs:
              PathtoPublish: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"
              artifactName: "drop"
          - task: AzureFunctionApp@2
            inputs:
              azureSubscription: app-ai-devops-knowledgebot-dev-001
              appType: functionAppLinux
              appName: $(functionAppName)
              package: $(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip
              deploymentMethod: "auto"

Output from the self hosted agent

Thanks a lot

You need to specify your toolcache path. In your case, it should be azp/_work/_tool
Thus, your Bash task's yaml should look like this:
- task: Bash@3
            inputs:
              targetType: "inline"
              script: |
                echo "##vso[task.setvariable variable=LD_LIBRARY_PATH;]:azp/_work/_tool/Python/3.11.8/x64/lib/"

@Alaeeala glad that I can help!
You can simply set the pipeline environment variable named LD_LIBRARY_PATH in the UI editor with the following value
:{TOOLCACHE_PATH}/Python/{VERSION}/x64/lib/

Or add the following bash task in your YAML template:
  - task: Bash@3
    inputs:
      targetType: 'inline'
      script: |
        echo "##vso[task.setvariable variable=LD_LIBRARY_PATH;]:{TOOLCACHE_PATH}/Python/{VERSION}/x64/lib/"

Where the TOOLCACHE_PATH is the custom toolcache path, and VERSION is the required Python version used in the UsePythonVersion task. The complete path should look like this :/mnt/vss/_work/_tool/Python/3.11.6/x64/lib/ for example.

Thank You!
Running self hosted Azure DevOps runner on my WSL2 Ubuntu 22.04.2 LTS on Windows 10
Work directory for Runner is /home/kuba/cicd-azuredevops/
For me it worked just adding pre task as:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "##vso[task.setvariable variable=LD_LIBRARY_PATH;]:/home/kuba/cicd-azuredevops/_tool/Python/3.11.5/x64/lib/"


Bug: Sphinx-warnings for re-importables

Overview
One of the on-going warnings / issues we have with sphinx docs is the cases when we import stuff from other python modules to be re-importable from or module, such as stuff in the ape.types namespace and some things in the ape.utils namespace
I have been poking around a Starknet python client library and noticed this gem: https://github.com/software-mansion/starknet.py/blob/development/starknet_py/utils/docs.py#L10
^ Looks like they also have had this same issues and have created a method that fixes it.
We should try to borrow this fix!
Specification
def as_our_module(cls: T) -> T:
    """
    We create alias for some function from starkware, but sphinx show original module path. This makes docs harder to
    follow.

    :param cls: class
    :return: Same class, just with changed module if docs are being created.
    """
    if not generating_docs:
        return cls

    frm = inspect.stack()[1]
    mod = inspect.getmodule(frm[0])
    cls.__module__ = mod.__name__
    return cls

(copied from starknet.py library, link is above)
And using it would be like this:
try:
    from functools import cached_property as _cp  # type: ignore
except ImportError:
    from backports.cached_property import cached_property as _cp  # type: ignore

cached_property = as_our_module(_cp)

Dependencies
Include links to any open issues that must be resolved before this feature can be implemented.

Lol that's pretty wild


systemd bloat in jessie image

The jessie image is ~50% bigger than wheezy. systemd appears to be a major culprit, with lib/systemd and lib/udev adding about 20Mb.
Does a docker image really need a heavy-weight init system? Is it possible to build the image with a stripped-down systemd?

It's likely possible to get systemd to not be part of the image, but then
we're moving further away from an upstream-supported configuration.  This
image is created from the "minbase" variant in a standard debootstrap,
which is defined as the absolute minimum set of packages for a functioning
Debian system.  If we start removing packages from that set, we may run
into some serious dependency resolution issues, since other packages are
not required to list explicitly their dependencies on packages in this
minimal set.

I've implemented this suggestion and #18 in accursoft/micro-jessie.


[MM-14193] Render emojis in Message Attachment title

Summary
This PR makes it possible to render emojis in Message Attachment title.
Ticket Link
Jira ticket | Fixes GitHub issue #10291
Checklist
N/A
Device Information
This PR was tested on: iPhone X with iOS 12.1, Nexus 5X with Android 9.0
Screenshots

Is this Ready to Merge?


Changed Material ease animations to fastOutSlowIn.

Fixes #5393.

@HansMuller should verify, but LGTM.

LGTM too


[#14] [KMM] [Backend] As a user, I can see my profile details

Close #14

What happened 👀

Add UserRemoteDataSource for fetching user's profile task.
Add UserRepository, GetUserProfileUseCase
Add test cases

Insight 📝
When a user is landed on the Home screen, there is a header view that contains the user's avatar image. We need to fetch the avatar from the endpoint api/v1/me to display at the header view.
Proof Of Work 📹

@AVI5HEK @markgravity I solved your comments in f000bea


Ethan's Updates for Readme & Notebooks 00-05

This PR makes addresses what I found needed updating in the Readme and notebooks 00-05.

Actually sorry for initially requesting a review, @bradleyboehmke – probably not necessary. Will just merge now.


TelemetryClient.Flush does not give errors with invalid InstrumentationKey

If you are reporting bug/issue, please provide detailed Repro instructions.
Repro Steps

Run below code

         var configuration = new TelemetryConfiguration
            {
                InstrumentationKey = "<some invalid key>",
                TelemetryChannel = new Microsoft.ApplicationInsights.Channel.InMemoryChannel()
            };
            var telemetryClient = new TelemetryClient(configuration);
            telemetryClient.Context.Operation.Id = Guid.NewGuid().ToString();
            telemetryClient.Context.Operation.Name = "Op Name";
            telemetryClient.TrackEvent("Testing App Insights SDK", new Dictionary<string, string> { { "TestEvent", "TestValue" } });
            telemetryClient.TrackTrace("App Insights Test");
            telemetryClient.Flush();

Actual Behavior

Flush() went through with no errors.

This gave our API the impression that everything was OK and 200 would be returned, which was misleading.

Expected Behavior

Exception should have been thrown if InstrumentationKey is invalid

Version Info
SDK Version : 2.11
.NET Version :	netcoreapp2.0
Hosting Info (IIS/Azure WebApps/ etc) : IIS

Hello @freebird8x, Thanks for reporting this.
Can you please describe how your ikey was invalid?
We've been having an internal discussion about this subject for the last couple of weeks.
Historically, a decision was made some time ago to NOT crash an application based on the ikey.
We are revisiting this.
Our ingestion service does return some metadata about ikey and we emit this in the logs.
https://github.com/microsoft/ApplicationInsights-Home/tree/master/Samples/ETW#tools-to-collect-etw

Hi, the key can be anything. It can be an empty string and Flush still went through with no errors. For our case, mistake can be made when we are switching deployment environment (i.e. dev, acceptance, etc.) and the key is not updated correctly, or someone uses a temporary environment but forgets to roll back the key after the environment is removed.
This is a critical bug for us. We have a buffer for pushing logs to App Insights and as long as the push returns 200, we clear the buffer. So if for any reason, a mistake is made on the iKey, we will be losing lots of data without knowing.
On another related issue, Flush() doesn't return any error code or response right now and if anything happens inside it, like a crash, the exceptions will be swallowed and we will also return 200, which will cause the same data lost problem.
I'm with you guys that Flush() is better off not to crash the code, but there should be some returned error code or response to indicate a successful push. Otherwise, it will be extremely difficult to QA the code.

Yeah, our Flush method does not meet expectations for a lot of scenarios. It's on the very top of our backlog to be redesigned, but I don't have an estimate at this time. Thank you again for reporting this scenario.
 We use our own buffer and manage retries. https://docs.microsoft.com/en-us/azure/azure-monitor/app/telemetry-channels#built-in-telemetry-channels

We're using the ServerTelemetryChannel but our case is more complicated as the buffer we maintain is on client's machine, which is on internal network, while the Flush() happens on an API that does the actual talks to Azure. So we pretty much gets the relayed response from the API to clear the local buffer.
I hope it will be fixed soon as enterprises like us are considering more Azure solutions but things like this really held us back.

Whether ikey is valid or not - Visual Studio experiences are still light up, thats probably the reason why it was decided not to throw if ikey is invalid.

We're really talking about three different problems here...
1. Invalid Ikey.
I'm actively working on this, and it should be delivered in the 2.12 stable release scheduled for early December.
Adding an exception to Flush() isn't going to solve this problem.
Instead we'll likely throw exceptions from the TelemetryConfiguration.InstrumentationKey property for very specific cases (ex: null, empty, illegal characters).
You may track this progress here: https://github.com/microsoft/ApplicationInsights-dotnet/issues/1260
Reviewing your description:

For our case, mistake can be made when we are switching deployment environment (i.e. dev, acceptance, etc.) and the key is not updated correctly, or someone uses a temporary environment but forgets to roll back the key after the environment is removed.

I would like to politely suggest that you consider deployment scripts to remove the human error from your environment configurations.
Many of our ASP.Net customers use an environment specific web.config transform to set the ikey.
Me personally, I'm not a NetCore developer so I don't know the correct alternative for your project type but if you need some help I can try to find someone who is familiar with this subject.
2. Flush
Our SDK does not validate your ikey, but our ingestion service does.
The ingestion service returns various HTTP response codes for your specific problems (ex: data cap exceeded, throttling, invalid ikey).
As you've stated, you're not receiving these response codes and cannot programmatically respond to them.
Adding exceptions to the Flush method will not solve your problem here.
Our telemetry channels send data constantly on an async background thread. Flush is only going send the current batch in the channel's buffer.
3. TelemetryChannel & service Http response codes.
I don't know how to solve this problem without rearchitecting a significant portion of the product. I will need to discuss this with our team, as solving this specific problem is not on our backlog and we're not ready to commit to this.
Our channels transmit data on background async threads so there is no convenient way to emit these response codes.
If our channel starts to throw exceptions, this would have unintended side effects so I don't believe this is the correct resolution.
Thinking out loud, maybe we could implement an optional event handler to the channel for you to subscribe to Http response codes, but honestly, I'm not certain what value this will provide.
I would like to hear your thoughts/ideas on this.
In your code sample, you referenced the InMemoryChannel.
You raised several concerns about losing data, and for this reason, we do recommend using the ServerTelemetryChannel which will persist data to your file system in the event of service errors.
You replied that you're already using the ServerTelemetryChannel in your production code so I think you're doing the right thing here.
As a workaround, you can subscribe to the ETW event logs that both of our channels emit.
InMemoryChannel implementation

https://github.com/microsoft/ApplicationInsights-dotnet/blob/7633ae849edc826a8547745b6bf9f3174715d4bd/BASE/src/Microsoft.ApplicationInsights/Channel/Transmission.cs#L163-L200

ServerTelemetryChannel implementation

https://github.com/microsoft/ApplicationInsights-dotnet/blob/7633ae849edc826a8547745b6bf9f3174715d4bd/BASE/src/ServerTelemetryChannel/Implementation/TransmissionSender.cs#L173-L192

ETW resources

https://github.com/microsoft/ApplicationInsights-Home/tree/master/Samples/ETW

Code sample

https://github.com/microsoft/ApplicationInsights-Home/blob/master/Samples/ETW/TraceEventUtility.cs

@TimothyMothra, @cijothomas
I have a use case where I want to log only once from the terminal and then flush and exit the process, and I would like to write an error to stdout if the logging was not successful.
Because of this I'm using InMemoryChannel and flushing directly afterwards. I saw that @TimothyMothra suggested that we can subscribe to the ETW event logs, but I'm not sure how to do that.
As I understand it, the following should suffice:
... // (1) Enable verbose logging in CoreEventSource

Trace.Listeners.Add(new ConsoleTraceListener()); // (2)

// (3) log

It's the (1) step that I'm unsure about. What's the right way to configure verbose logging?
Thanks!

@TimothyMothra  Update: After reading the code properly, I now see that I'm not really looking for how to enable verbose logging, but just being able to listen to the log written in CoreEventSource.Log.TransmissionStatusEventFailed(ex);.
I assumed that adding the console trace listener to Trace.Listeners was enough to listen to all messages traced in the process, but I guess that's not enough. I wonder if you could guide me in the right direction?


test: improve SILGen coverage on Windows

Make these SILGen tests pass on windows too

Replace this paragraph with a description of your changes and rationale. Provide links to external references/discussions if appropriate.

Resolves SR-NNNN.

@swift-ci please test

CC: @gottesmm

CC: @slavapestov @jrose-apple - at the suggestion of @gottesmm

I want this to land. @compnerd can you split out the -emit-sorted-sil changes. I do think it is important to figure out /why/ this is happening. I talked with Jordan and we think the rest of it is ok.

Splintered the unsorted bits into #21493

Going to close this, however, this is still unfixed.  The change in #22308 fixes the sorting issue.


Increase the font using CSS

Hello, friends!
Please tell me how to increase the font using CSS?

Hu @VlaK0r, to change the font sizes, please follow these steps:

Enter the preferences
Hit the "Customize" button on the "Theme" section
Enter a custom style like this::root {
  --font-size-post: 20px;
}

This will increase the font size for posts and headings, and adjust some spacings so everything is still aligned nicely.
There are some hardcoded font sizes that won't change with this because otherwise the user interface would break.
You can find more customization options in the readme.

Hi @VlaK0r, to change the font sizes, please follow these steps:
1. Enter the preferences

2. Hit the "Customize" button on the "Theme" section

3. Enter a custom style like this:
   ```css
   :root {
     --font-size-post: 20px;
   }
   ```

This will increase the font size for posts and headings, and adjust some spacings so everything is still aligned nicely.
There are some hardcoded font sizes that won't change with this because otherwise the user interface would break.
You can find more customization options in the readme.

For example, there is a code.

These are the default settings for feedly.css /
:root {
--base-spacing: 30px; / works best with a value between 30px and 75px /
--font-size-post: 16px;
--fonts-ui: "Helvetica Neue", Arial, Helvetica, "Liberation Sans",
"Nimbus Sans L", FreeSans, sans-serif;
--fonts-content: var(--fonts-ui);
--fonts-heading: SansCn;
--fonts-mono: "Fira Code", Menlo, Monaco, Consolas, "Lucida Console",
"Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono",
"Courier New", monospace;
--reading-width: 45; / use a unitless em value */
--card-max-column-count: 10;
--card-min-column-width: 300px;
}

What needs to be changed or added in it to increase the font of the headings or in the left panel?
When I change --font-size-post: 16px; to 30px, the font size only changes in the right window.

As I mentioned, some font sizes are hardcoded and can't be changed because this would break the layout. You can try something like this to zoom the entire UI:
:root {
    zoom: 1.2;
}

Then you can also play with smaller values for --base-spacing and/or --font-size-post to compensate some unwanted size increases.

Thank you very much for your help!
This code (zoom: 1.2;) doesn't change anything for some reason.
But I came out differently. I increased the scale of the page using the browser, but not all pages, only the font. In this case, nothing changes except the font.
It looks wonderful!
Thank you so much for the theme!

Oh, then you are probably using Firefox, right? zoom is non-standard CSS that doesn't work there. Glad that you could make it work for you with browser settings!

Oh, then you are probably using Firefox, right? zoom is non-standard CSS that doesn't work there. Glad that you could make it work for you with browser settings!

You can enlarge the font in the right panel by adding -
body.flat.ttrss_index #main {
font-size: var(--font-size-main,15px);
}


Helm chart should create the PVC

Title
The Helm chart requires you pre-create the PVC. It should have an option to make this as part of the deployment.
Additional context
When using a tool like Terraform with Rancher you do not have the option of creating a PV but you can install helm charts. It makes it difficult to deploy this chart without also creating the PVC for you.

Duplicate of https://github.com/F5Networks/f5-ipam-controller/issues/96
closing this issue.


makefile patch

Such a shame and now somebody noticed. Sorry for those tons of PRs

Thanks!

Can you please also tag the package?

Yes I will do it when I get at home.


vnet-manager installation fails on Ubuntu 20.04 due to old pyopenssl

Hi Erik,
Nice to meet you. You're an alumnus of OS3, I'm a new student 👋
We're using vnet-manager in our labs, in Ubuntu 20.04 VMs. Unfortunately, I've had to deal with a bug during initial setup of vnet-manager. TL;DR there is a workaround (upgrading pyopenssl).
I have installed a clean VM:
root@guest-02:~# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.6 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.6 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

(+ https://github.com/Erik-Lamers1/vnet-manager#install-the-required-packages)
Running pip3 install vnet-manager:
root@guest-02:~/vnet-manager# pip3 install vnet-manager
Collecting vnet-manager
  Downloading vnet_manager-1.1.0-py3-none-any.whl (38 kB)
Collecting PyYAML>=6.0
  Downloading PyYAML-6.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (736 kB)
     |████████████████████████████████| 736 kB 35.9 MB/s
Collecting pylxd>=2.3.1
  Downloading pylxd-2.3.1.tar.gz (77 kB)
     |████████████████████████████████| 77 kB 6.0 MB/s
Collecting distro>=1.7.0
  Downloading distro-1.8.0-py3-none-any.whl (20 kB)
Collecting tabulate>=0.8.9
  Downloading tabulate-0.9.0-py3-none-any.whl (35 kB)
Collecting psutil>=5.9.0
  Downloading psutil-5.9.6-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (283 kB)
     |████████████████████████████████| 283 kB 46.8 MB/s
Collecting pyroute2==0.7.3
  Downloading pyroute2-0.7.3-py3-none-any.whl (445 kB)
     |████████████████████████████████| 445 kB 46.5 MB/s
Collecting colorama>=0.4.4
  Downloading colorama-0.4.6-py2.py3-none-any.whl (25 kB)
Collecting cryptography>=3.2
  Downloading cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.4 MB)
     |████████████████████████████████| 4.4 MB 45.1 MB/s
Collecting python-dateutil>=2.4.2
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     |████████████████████████████████| 247 kB 69.1 MB/s
Collecting requests-toolbelt>=0.8.0
  Downloading requests_toolbelt-1.0.0-py2.py3-none-any.whl (54 kB)
     |████████████████████████████████| 54 kB 2.5 MB/s
Requirement already satisfied: requests-unixsocket>=0.1.5 in /usr/lib/python3/dist-packages (from pylxd>=2.3.1->vnet-manager) (0.2.0)
Requirement already satisfied: requests>=2.20.0 in /usr/lib/python3/dist-packages (from pylxd>=2.3.1->vnet-manager) (2.22.0)
Collecting ws4py!=0.3.5,>=0.3.4
  Downloading ws4py-0.5.1.tar.gz (51 kB)
     |████████████████████████████████| 51 kB 146 kB/s
Collecting cffi>=1.12
  Downloading cffi-1.16.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (444 kB)
     |████████████████████████████████| 444 kB 59.3 MB/s
Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.4.2->pylxd>=2.3.1->vnet-manager) (1.14.0)
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     |████████████████████████████████| 118 kB 80.9 MB/s
Building wheels for collected packages: pylxd, ws4py
  Building wheel for pylxd (setup.py) ... done
  Created wheel for pylxd: filename=pylxd-2.3.1-py3-none-any.whl size=121866 sha256=39172683c793b6425815f9b35b3cb85375cde988a5b66040888c72f68f7df5f3
  Stored in directory: /root/.cache/pip/wheels/1b/ba/db/f0e675c17be723606096131e6f5059e5e05e7a9904f30bb4dd
  Building wheel for ws4py (setup.py) ... done
  Created wheel for ws4py: filename=ws4py-0.5.1-py3-none-any.whl size=45215 sha256=8fd5a8e22548cf9f7e483749c1da41f7450b1bf994c2bce09f2bf3e49e64f8ae
  Stored in directory: /root/.cache/pip/wheels/ea/f9/a1/34e2943cce3cf7daca304bfc35e91280694ced9194a487ce2f
Successfully built pylxd ws4py
Installing collected packages: PyYAML, pycparser, cffi, cryptography, python-dateutil, requests-toolbelt, ws4py, pylxd, distro, tabulate, psutil, pyroute2, colorama, vnet-manager
  Attempting uninstall: PyYAML
    Found existing installation: PyYAML 5.3.1
    Not uninstalling pyyaml at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'PyYAML'. No files were found to uninstall.
  Attempting uninstall: cryptography
    Found existing installation: cryptography 2.8
    Not uninstalling cryptography at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'cryptography'. No files were found to uninstall.
  Attempting uninstall: distro
    Found existing installation: distro 1.4.0
    Not uninstalling distro at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'distro'. No files were found to uninstall.
  Attempting uninstall: colorama
    Found existing installation: colorama 0.4.3
    Not uninstalling colorama at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'colorama'. No files were found to uninstall.
Successfully installed PyYAML-6.0.1 cffi-1.16.0 colorama-0.4.6 cryptography-41.0.5 distro-1.8.0 psutil-5.9.6 pycparser-2.21 pylxd-2.3.1 pyroute2-0.7.3 python-dateutil-2.8.2 requests-toolbelt-1.0.0 tabulate-0.9.0 vnet-manager-1.1.0 ws4py-0.5.1

vnet-manager cannot be executed:
root@guest-02:~/vnet-manager# vnet-manager
Traceback (most recent call last):
  File "/usr/local/bin/vnet-manager", line 5, in <module>
    from vnet_manager.vnet_manager import main
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager/vnet_manager.py", line 8, in <module>
    from vnet_manager.actions.manager import ActionManager
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager/actions/manager.py", line 6, in <module>
    import vnet_manager.operations.machine as machine_op
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager/operations/machine.py", line 8, in <module>
    from pylxd.exceptions import NotFound, LXDAPIException
  File "/usr/local/lib/python3.8/dist-packages/pylxd/__init__.py", line 17, in <module>
    from pylxd.client import Client, EventType
  File "/usr/local/lib/python3.8/dist-packages/pylxd/client.py", line 21, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
    from urllib3.contrib import pyopenssl
  File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module>
    class X509StoreFlags(object):
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
    CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'
Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 72, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes
  File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report
  File "/usr/lib/python3/dist-packages/apport/report.py", line 32, in <module>
    import apport.fileutils
  File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 12, in <module>
    import os, glob, subprocess, os.path, time, pwd, sys, requests_unixsocket
  File "/usr/lib/python3/dist-packages/requests_unixsocket/__init__.py", line 1, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
    from urllib3.contrib import pyopenssl
  File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module>
    class X509StoreFlags(object):
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
    CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

Original exception was:
Traceback (most recent call last):
  File "/usr/local/bin/vnet-manager", line 5, in <module>
    from vnet_manager.vnet_manager import main
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager/vnet_manager.py", line 8, in <module>
    from vnet_manager.actions.manager import ActionManager
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager/actions/manager.py", line 6, in <module>
    import vnet_manager.operations.machine as machine_op
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager/operations/machine.py", line 8, in <module>
    from pylxd.exceptions import NotFound, LXDAPIException
  File "/usr/local/lib/python3.8/dist-packages/pylxd/__init__.py", line 17, in <module>
    from pylxd.client import Client, EventType
  File "/usr/local/lib/python3.8/dist-packages/pylxd/client.py", line 21, in <module>
    import requests
  File "/usr/lib/python3/dist-packages/requests/__init__.py", line 95, in <module>
    from urllib3.contrib import pyopenssl
  File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module>
    class X509StoreFlags(object):
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
    CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

This error was fixed by reinstalling pyopenssl (cf. https://stackoverflow.com/a/75295873). In yet another clean VM I have verified running pip3 install pyopenssl --upgrade (upgrade to v23.3.0) before installing vnet-manager also fixes the issue. focal's python3-openssl package is based on v19.0.0, which is too old.
On top of this, I had encountered another error during topology creation (TypeError: request() got an unexpected keyword argument 'chunked'), which I fixed by installing request==2.28.0, but I couldn't reproduce this bug... probably interesting for later.

Output from pipdeptree:
[snip]
pyOpenSSL==23.3.0
└── cryptography [required: >=41.0.5,<42, installed: 41.0.5]
    └── cffi [required: >=1.12, installed: 1.16.0]
        └── pycparser [required: Any, installed: 2.21]
[snip]
vnet-manager==1.1.0
├── colorama [required: >=0.4.4, installed: 0.4.6]
├── distro [required: >=1.7.0, installed: 1.8.0]
├── psutil [required: >=5.9.0, installed: 5.9.6]
├── pylxd [required: >=2.3.1, installed: 2.3.1]
│   ├── cryptography [required: >=3.2, installed: 41.0.5]
│   │   └── cffi [required: >=1.12, installed: 1.16.0]
│   │       └── pycparser [required: Any, installed: 2.21]
│   ├── python-dateutil [required: >=2.4.2, installed: 2.8.2]
│   │   └── six [required: >=1.5, installed: 1.14.0]
│   ├── requests [required: >=2.20.0, installed: 2.22.0]
│   ├── requests-toolbelt [required: >=0.8.0, installed: 1.0.0]
│   │   └── requests [required: >=2.0.1,<3.0.0, installed: 2.22.0]
│   ├── requests-unixsocket [required: >=0.1.5, installed: 0.2.0]
│   └── ws4py [required: >=0.3.4,!=0.3.5, installed: 0.5.1]
├── pyroute2 [required: ==0.7.3, installed: 0.7.3]
├── PyYAML [required: >=6.0, installed: 6.0.1]
└── tabulate [required: >=0.8.9, installed: 0.9.0]

I wouldn't consider myself to be a Python expert, but I think all of this boils down to a compatibility issue between cryptography and pyOpenSSL. The developers of pylxd could pin higher versions for their dependencies. The lab teachers have tested the INR lab on 22.04, which has python3-openssl v21.0.0, so I guess that'll OS work just fine.

Thanks for your reply! I've used this image: https://cloud-images.ubuntu.com/focal/current/ -> focal-server-cloudimg-amd64-disk-kvm.img
On a fresh install (you might have used a different image!), these packages are installed:
ii  python3-cryptography           2.8-3ubuntu0.1                    amd64        Python library exposing cryptographic recipes and primitives (Python 3)
ii  python3-openssl                19.0.0-1build1                    all          Python 3 wrapper around the OpenSSL library

Installing python3-pip did NOT cause an upgrade for these packages. After purging python3-openssl using apt, I installed vnet-manager using pip3. This trigger a library upgrade for cryptography: cryptography-41.0.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (instead of 2.8 as provided by Ubuntu!), and pyOpenSSL will not be installed. vnet-manager seems to work just fine.
Now... after installing python3-openssl, pip3 install vnet-manager refuses to install vnet-manager: AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK. So yeah, either you need to upgrade pyOpenSSL before installing vnet-manager, or you need to purge python3-openssl before installing. vnet-manager and the older version pyOpenSSL cannot co-exist. If you executed your test without python3-openssl, I'm not surprised you weren't able to reproduce this bug.
Co-installing cryptography==35.0' and pyOpenSSL==22.0.0(per https://pypi.org/project/pyOpenSSL/22.0.0/) also works, by the way, so it looks like these packages have something to do with each other. Vincent and I are awarepyOpenSSLis not a dependency for vnet-manager,cryptographyis however (forrequests, required by pylxd), and pyOpenSSLalso requirescryptography` (but not vice versa). Talking about rabbit holes....
Apparently, we should not use pyOpenSSL if possible, see https://pypi.org/project/pyOpenSSL/. Even while pyOpenSSL may not be a hard dependency in vnet-manager and/or pylxd, requests certainly is a hard dependency. And if pyOpenSSL exists on the system (which it does by default!), it will be used in requests (see the traceback in the error). Work is underway to remove any usage of pyOpenSSL inrequests, see https://github.com/psf/requests/pull/5443, a commit that is included in v2.24.0.
You have added requests as a requirement, but the version constraints will not prevent a requests version older than '2.24.0' from being installed. After re-installing my focal guest and installing vnet-manager from source, vnet-manager still throws the pyOpenSSL-related error. I was curious if changing the constraint to `>=2.24.0,<2.30.0' would work.
Re-installed the guest yet another time. After applying this change:
diff --git a/requirements/base.txt b/requirements/base.txt
index def0384..2bb889c 100644
--- a/requirements/base.txt
+++ b/requirements/base.txt
@@ -5,4 +5,4 @@ pylxd>=2.3.1
 pyroute2==0.7.3
 psutil>=5.9.0
 distro>=1.7.0
-requests<2.30.0
+requests>=2.24.0,<2.30.0

requests v2.29.0 was installed during installation of vnet-manager. Guess what? It's not requests, but ws4py (another dependency of pylxd) relying on pyOpenSSL:
Traceback (most recent call last):
  File "/usr/local/bin/vnet-manager", line 11, in <module>
    load_entry_point('vnet-manager==1.1.1', 'console_scripts', 'vnet-manager')()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 490, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2854, in load_entry_point
    return ep.load()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2445, in load
    return self.resolve()
  File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2451, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager-1.1.1-py3.8.egg/vnet_manager/vnet_manager.py", line 8, in <module>
    from vnet_manager.actions.manager import ActionManager
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager-1.1.1-py3.8.egg/vnet_manager/actions/manager.py", line 6, in <module>
    import vnet_manager.operations.machine as machine_op
  File "/usr/local/lib/python3.8/dist-packages/vnet_manager-1.1.1-py3.8.egg/vnet_manager/operations/machine.py", line 8, in <module>
    from pylxd.exceptions import NotFound, LXDAPIException
  File "/usr/local/lib/python3.8/dist-packages/pylxd-2.3.1-py3.8.egg/pylxd/__init__.py", line 17, in <module>
    from pylxd.client import Client, EventType
  File "/usr/local/lib/python3.8/dist-packages/pylxd-2.3.1-py3.8.egg/pylxd/client.py", line 25, in <module>
    from ws4py.client import WebSocketBaseClient
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/usr/local/lib/python3.8/dist-packages/ws4py-0.5.1-py3.8.egg/ws4py/client/__init__.py", line 10, in <module>
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 618, in _load_backward_compatible
  File "<frozen zipimport>", line 259, in load_module
  File "/usr/local/lib/python3.8/dist-packages/ws4py-0.5.1-py3.8.egg/ws4py/websocket.py", line 11, in <module>
  File "/usr/lib/python3/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1553, in <module>
    class X509StoreFlags(object):
  File "/usr/lib/python3/dist-packages/OpenSSL/crypto.py", line 1573, in X509StoreFlags
    CB_ISSUER_CHECK = _lib.X509_V_FLAG_CB_ISSUER_CHECK
AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

ws4py is yet another piece of software not requiring pyOpenSSL, but it'll definitely use it if available. Okay, looks like for lots of packages, pyOpenSSL is considered to be a soft dependency. After some more fiddling, I've found out installing pyOpenSSL v21.0.0 (the oldest version including the commit where the reference to X509_V_FLAG_CB_ISSUER_CHECK was removed ) also works.
Conclusion

PyOpenSSL is installed by default on (at least) certain focal images
PyOpenSSL is not a dependency for pylxd/vnet-manager, but various dependencies of pylxd (at least requests and ws4py) will use it if installed
The python3-openssl package is too old for the installed version of cryptography
Removing PyOpenSSL before installing vnet-manager fixes the issue, but I haven't tested if something else would break w/o PyOpenSSL
Adding PyOpenSSL >=21.0.0 to base/requirements.txt master HEAD also fixes the issue

Either we remove support for focal, we ask people to uninstall (using apt) or upgrade (using pip3) python3-openssl/PyOpenSSL on focal systems before installing vnet-manager on focal, we introduce a hard dependency on PyOpenSSL with a proper version constraints, or we ask the pylxd developers to incorporate a fix in their requirements file. What do you think?

Thanks for the explanation @Southparkfan, I see now that this is an issue with system packages interfering with the setup.
I was able to reproduce this on my test 20.04 system as well using the default system packages and trying to install vnet-manager. I think this mostly comes down to a documentation issue. As the README recommends to install vnet-manager in the global system env, these issues are bound the happen on older OS'es. Its not only vnet-manager that suffers from this, every package that uses the pyopenssl lib is broken in this case, even PIP itself.
I updated the README to recommend people to install vnet-manager in a virtualenv now (at least on older OS'es).


npmjs.org tells me that left-pad is not available (404 page)

When building projects on travis, or when searching for left-pad on npmjs.com, both will report that the package cannot be found.
Here is an excerpt from the travis build log
npm ERR! Linux 3.13.0-40-generic
npm ERR! argv "/home/travis/.nvm/versions/node/v4.2.2/bin/node" "/home/travis/.nvm/versions/node/v4.2.2/bin/npm" "install"
npm ERR! node v4.2.2
npm ERR! npm  v2.14.7
npm ERR! code E404
npm ERR! 404 Registry returned 404 for GET on https://registry.npmjs.org/left-pad
npm ERR! 404
npm ERR! 404 'left-pad' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404 It was specified as a dependency of 'line-numbers'
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! Please include the following file with any support request:
npm ERR!     /home/travis/build/coldrye-es/pingo/npm-debug.log
make: *** [deps] Error 1

And here is the standard npmjs.com error page https://www.npmjs.com/package/left-pad
However, if I remove left-pad from my local npm cache and then reinstall it using npm it will happily install<EMAIL_ADDRESS>

according to https://registry.npmjs.org/left-pad
unpublished: {
  name: "azer",
  time: "2016-03-22T21:27:15.696Z",
  ...
}

@tonytamps thanks for pointing this out
@azer why? this will break babel based builds on travis...

I'm having the same issue.

Yep, I'm having the same problem.

Seems like https://www.npmjs.com/package/left-pad is up again, but no versions published.

@tonytamps it seems like the registry has updated weirdly
{
"_id": "left-pad",
"_rev": "12-29db2b53680e1c66ee1acc89502fe1b0",
"name": "left-pad",
"time": {
"modified": "2016-03-22T21:42:18.002Z",
"created": "2014-03-14T09:09:20.762Z",
"0.0.0": "2014-03-14T09:09:20.762Z",
"0.0.1": "2014-08-14T03:31:03.146Z",
"0.0.2": "2014-08-15T07:13:09.056Z",
"0.0.3": "2014-08-15T07:14:44.360Z",
"0.0.4": "2015-05-20T04:04:04.473Z",
"1.0.0": "2016-03-22T21:42:18.002Z",
"unpublished": {
"name": "westlac",
"time": "2016-03-22T21:47:25.250Z",
"tags": {
"latest": "1.0.0"
},
"maintainers": [
{
"name": "westlac",
"email"<EMAIL_ADDRESS>}
],
"versions": [
"1.0.0"
]
}
},
"_attachments": { }
}

Yeah I published a 1.0.0 to try to resolve the dependency. It looks like someone (not me) completely removed left-pad from the npm registry

Is there a way to get all the old versions back again? In my project it's at the end of a fairly long dependency chain...

@azer would know better why it was unpublished (assuming he was the one to unpublish it)

@camwest The package line-numbers is pinned to 0.0.3 specifically, so you'll need to publish that version or someone will have to summon the creator of line-numbers.

Just tried replacing the travis version of npm which is fairly old by a the latest and see what it will do
npm ERR! Linux 3.13.0-40-generic
npm ERR! argv "/home/travis/.nvm/versions/node/v4.2.2/bin/node" "/home/travis/.nvm/versions/node/v4.2.2/bin/npm" "install"
npm ERR! node v4.2.2
npm ERR! npm  v3.8.2
npm ERR! No compatible version found<EMAIL_ADDRESS>npm ERR! Valid install targets:
npm ERR! 0.0.9
npm ERR!
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR!     /home/travis/build/coldrye-es/pingo/npm-debug.log
make: *** [deps] Error 1

It will now tell me that there is a version 0.0.9... weird.

+1 same issue here.

@RongxinZhang try and use the new GitHub reactions instead of the old +1 :)

+1 same issue

@jmcriffey I can't publish 0.0.3 because it's already been published and removed. NPM forbids publishing a version of the same library twice.

@lydell is there a way to make line-numbers work again, perhaps an alternate package or by depending on<EMAIL_ADDRESS>instead?

+1... this is messing things up for a lot of ppl.

See https://github.com/lydell/line-numbers/pull/3
This pull request needs to be merged and line-numbers needs to be republished

+1 Also broke my stuff

Same

Same - broke my build

What about emailing NPM support<EMAIL_ADDRESS>directly?

This kind of just broke the internet.

It broked our build. Halp pl0x. Demo video for investors needs deploy soon. :-)

My build wants version 0.0.3 back or else it's going to hold me hostage.

was about to deploy after weeks of work (to show the client) and bam - this issue.

https://news.ycombinator.com/item?id=11340319

It looks like someone (not me) completely removed left-pad from the npm registry

Time to update your password / credentials?

@camwest Ah yeah, I forgot it won't let you republish a version. Seems like you shouldn't be able to delete a version either. The github profile @lydell says they are in Sweden so we might be out of luck until morning there.

@jacksonrayhamilton I'm not the original author. When it was removed from npm I just forked this repo and republished it.

Chatting in https://slack.babeljs.io #discussion fyi

Emergency release of babel with line numbers dependency removed incoming soon...

Yep, given that it's unclear when line-numbers will be updated, we're dropping the dependency from babel-code-frame for now until we have more time to resolve.

@azer please could you re publish this repo.

You can install from github by adding "left-pad": "git://github.com/azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355" to your package.json

I made a pull request to line-numbers that is using this as a dependency if you guys want to thumb that up so he sees it https://github.com/lydell/line-numbers/pull/2 i believe @camwest made one too

@loganfsmyth care to use lodash? https://lodash.com/docs#padStart

Published a new version of babel-code-frame as 6.7.3 that removes line-numbers. Need to backport it to v5.

The problem with "tiny modules" -- so easy to break the whole NPM ecosystem.

@maxkostow Thanks,

adding "left-pad": "git://github.com/azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355" to your package.json

fixed my build

@loganfsmyth @kittens thank you very much. YMMD!

The problem with "tiny modules" -- so easy to break the whole NPM ecosystem.

NPM should really not allow removing of previously published versions.... surely?

A relevant place to bring up the npm issue is over here: https://github.com/npm/npm/issues/12012

@ctolkien I think that this is also proving that a small issue can be fixed in a matter of minutes with open source when hundreds of people are having an issue. Definitely much better than calling your oracle rep to submit a ticket for an issue.

FYI @isaacs

FYI Babel 6 is now fixed.
$ npm install babel-core@6
/Users/sebmck/Scratch/fuckkk
└─┬<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ ├─┬<EMAIL_ADDRESS>  │ │ ├──<EMAIL_ADDRESS>  │ │ └──<EMAIL_ADDRESS>  │ ├──<EMAIL_ADDRESS>  │ └──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ ├──<EMAIL_ADDRESS>  │ ├─┬<EMAIL_ADDRESS>  │ │ ├──<EMAIL_ADDRESS>  │ │ └──<EMAIL_ADDRESS>  │ ├─┬<EMAIL_ADDRESS>  │ │ └──<EMAIL_ADDRESS>  │ └─┬<EMAIL_ADDRESS>  │   └─┬<EMAIL_ADDRESS>  │     └──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ ├──<EMAIL_ADDRESS>  │ └─┬<EMAIL_ADDRESS>  │   └──<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ └──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ └──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├─┬<EMAIL_ADDRESS>  │ └─┬<EMAIL_ADDRESS>  │   ├──<EMAIL_ADDRESS>  │   └──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  ├──<EMAIL_ADDRESS>  └──<EMAIL_ADDRESS>

The problem with "tiny modules" -- so easy to break the whole NPM ecosystem.

The way I see it, the problem is not the modules, but rather reliance on a centralized system.

 This is not something over which the npm CLI maintainers have any control or responsibility. It's unfortunate that this package got unpublished, but this is the system behaving as designed.

a way to vendor npm modules would be sweet

The problem is reliance on other people.
If you rely on other people -- for literally anything -- then you can be surprised when they act in ways that you didn't predict.
That goes for relying on other peoples' servers, their code, their ability to show up to their jobs on time, etc.
The only way to never be surprised or inconvenienced by other people is to not rely on other people for anything.  And none of us are about to do that.
@sheki https://docs.npmjs.com/files/package.json#bundleddependencies
This problem was identified and then fixed in minutes.  This isn't an example of the small modules philosophy breaking; it's an example of it working.

Wait so what is the fix? Im still getting the error

@anauleau upgrade to babel ^6.7.3 (you may need to clear npm cache locally)

Upgrading babel isn't trivial

@anauleau This is fixed to Babel 6.x, a fix for 5.x is incoming.

I am using babel 5.x, so ill wait...

The fix from @maxkostow worked for me.

This problem was identified and then fixed in minutes. This isn't an example of the small modules philosophy breaking; it's an example of it working.

@isaacs I completely agree with you, thanks guys!

Hi all,
Sorry about this. I've unpublished all my stuff from NPM.
You can change your dependency to point to azer/left-pad.
If there is any volunteer to take over this module, I'll happily transfer the repo.
Apologizes for inconvenience.
Azer

haha broke my build too. this literally broke major projects like react-native :smile:
facebook/react-native#6595
Seems like a lot of major projects have dependencies on this.

@azer yes, please transfer it to me.

@azer my npm username is sebmck.

@kittens i would be glad to help too username ccutch

wait nope, there's literally no way to fix this. you've basically broken every single version of babel. you can't republish over already published packages. babel relies on line-numbers with a fixed version and line-numbers relies on left-pad with a fixed version.

The only way to never be surprised or inconvenienced by other people is to not rely on other people for anything. And none of us are about to do that.

That's not what I was implying. The JavaScript community is library-based; of course we must and do rely on each other for almost everything.
I was implying some decentralization could make the system more reliable. For instance: If a package can't be downloaded, but is cached, install the cached version? (Maybe resolve this issue?) Or: Replicate (part of) the registry locally or onto your own server, and refuse to delete packages on your server?

@kittens the repo on npm was complety erased and re uploaded making the 0.0.3 release erased.

@azer I read your article on medium.
I think what happened is really sad and we should think of some sort of protection against this kind of things happening.

@azer While I'm annoyed this has wasted part of my day. I'm okay for the reasons as you've explained. Now to deal with the fallout.

I changed my pull request for line-numbers which is the dependency that babel uses to use lodash over this library https://github.com/lydell/line-numbers/pull/2 please help get this noticed.

@ccutch that wont fix it since babel relies on it as a fixed version rather than a range

Is there really no way to tell npm to re-publish a package that was explicitly unpublished?

@loganfsmyth there sure is - NPM Inc can step in and steal control of this module just like they did the kik module.

Forget my broken build, stick it to the man!! @azer I totally agree, thank you for your contributions and helping the JS community grow just a little bit more, regardless of this outcome. Cheers buddy!

wait nope, there's literally no way to fix this. you've basically broken every single version of babel. you can't republish over already published packages.

If it's not apparent yet, but this exemplifies how NPM and much of the community's use of it is utterly broken.

The Medium article, for those interested.

@tmcgee123 yes, who cares about all the peoples time this is wasting am i right

Thanks to @maxkostow - his fix also worked for me.
npm install azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355 --save

FYI I was deploying on Codeship but had to clear their depenency cache.

@maxkostow

adding "left-pad": "git://github.com/azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355" to your package.json

Thanks for the fix!

Everyone check out my new npm module called dominospizza™

Managed to publish babel 5.8.36.
IF YOU HAVE YOUR VERSION FIXED THEN YOU WILL NEED TO UPDATE TO ONE OF THE FOLLOWING:

6.7.2
5.8.38

So ironic that 17 lines of code breaks the internet :raised_hands:

So ironic that 17 lines of code breaks the internet :raised_hands:

https://www.youtube.com/watch?v=nT1TVSTkAXg

We've made a copy of 0.0.3 available for anyone who wants to point to it instead: https://github.com/Automattic/left-pad-0.0.3
Here's how we updated our shrinkwrap file to point to it: https://github.com/Automattic/wp-calypso/commit/a6ab6176fc748e5f62bd6fdbd97c19483beab14f

I've requested from npm that they restore 0.0.3 on npm since I'm not the owner of the package...

npm install azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355 --save
Unfortunately, this does not work behind most corporate firewalls.

Wow. Many hundreds (thousands by the time it's all done?) of man hours were just wasted because someone doesn't understand basic copyright and trademark law. I'm not a lawyer, but as I understand this NPM and the lawyers did exactly what they were legally required to do.
There's no "sticking it to the man" here, this is punishing your fellow node and javascript developers. This is a knee-jerk reaction to a very typical and expected situation (do a Google search for "kik") with no thought at all to the consequences.
Also, why do so many NPM modules depend on so many small, easily inlineable helpers and tools?

 This works sweet. Installs the so-badly-needed<EMAIL_ADDRESS>version. I am on track now :)
"left-pad": "git://github.com/azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355",

It seems to be working now. Without any hacks or having to manualy install the package.

@paladox I just tried, doesn't work for me.  Did you do an npm cache clear before you tried to install?

Someone get kik on the phone, see if they want to take ownership of left-pad

@loudwinston nope.

@paladox Do that and try again.  I'm fairly certain its still broken, and will remain so since npm doesn't allow you to republish with the same version number.

@loudwinston if you have a shrinkwrap you need to delete npm_modules, reinstall and regenerate it

@paladox it's not working for me
npm install<EMAIL_ADDRESS>npm ERR! Darwin 15.4.0
npm ERR! argv "node" "/usr/local/bin/npm" "--registry" "https://registry.npmjs.org" "install"<EMAIL_ADDRESS>npm ERR! node v0.12.7
npm ERR! npm  v2.14.8

npm ERR! version not found<EMAIL_ADDRESS>

and make sure your babel semver lets you install the latest babel

I can confirm this is fixed

@jasonroelofs Reminds me of DNS - also incompatible with the trademark system.
Namespacing might help avoid this, too. We'd probably still have suits over namespaces, but at least kik and azer could probably each have their own kik.

Also, why do so many NPM modules depend on so many small, easily inlineable helpers and tools?

@jasonroelofs I dunno, but I got tired of reading changelogs for dozens of semi-maintained deps, so I went back to using Python on the server. Just sayin'

@stavarotti Did you try using git+https://github.com/azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355 ?  That works for me behind my corp firewall

@diffsky maybe because I did --save.

@jasonroelofs

Also, why do so many NPM modules depend on so many small, easily inlineable helpers and tools?

not to sound too cynical, but welcome to NPM!
majority of modules are tiny, repeatable simple logic pieces ... it seems as a community we're heavily relying on this pattern.
anyways, not a relevant discussion to this thread, but one I'd like us (as a community) to discus further.

Was broken for my react-native build, is now working.

https://twitter.com/seldo/status/712414588281552900

@jasonroelofs This is how NPM and the JS ecosystem works since 6 years ago

As this is well beyond the scope of the CLI, and as there isn't any new or useful discussion happening here, I'm going to lock this thread. Thanks to all who helped in quickly responding to this issue, and I'm genuinely sorry this created so much awkwardness and wasted time for so many.

So everyone is clear on what has been updated:
Babel 5
A new version<EMAIL_ADDRESS>has been published. If your deps were relying on semver ranges, reinstalling your deps should install the newest version, otherwise you'll need to manually bump your dependency to 5.8.38.
Babel 6
The package<EMAIL_ADDRESS>was released, which is a sub-dependency of<EMAIL_ADDRESS>so re-installing any version of Babel 6 should resolve the issue for you because<EMAIL_ADDRESS>has a very broad range for its subdependencies.
Note, if you have an npm cache on your network, you could still have issues so please be sure you're pulling in the updated versions of everything.
That is our recommended solution currently.

@othiym23 pretty sure you can't lock this thread.

Ooops! Wrong issue! @deoxxa, you're right. That was meant for npm/npm#12012, which has now been locked. Sorry to all for the misfire.

@jasonroelofs So true, man. "I'm dismayed NPM wouldn't break the law for me and thus protect me from myself."

all y'all are acting super entitled that some guy decided to exercise his legal right to go elsewhere. don't rely on underpaid, overexploited developers for your critical infrastructure maybe? :)

@azer : There are better ways to express your protest than by causing such a widespread disruption. Didn't really expect to spend the last hours of my day cleaning up after another's tantrum.

I'd like to request that @othiym23 given abilities to lock any thread on any repo. Thanks for your understanding.

is left-pad 0.0.3 still being restored? doesn't seem to work yet for me.
npm ERR! argv "node" "/usr/local/bin/npm" "install"<EMAIL_ADDRESS>npm ERR! node v0.12.7
npm ERR! npm  v2.11.3

npm ERR! version not found<EMAIL_ADDRESS>npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     <https://github.com/npm/npm/issues>

Also as much as it sucks what happened, it's @azer's choice to do what he wants with his modules. Nobody here is entitled to them working forever, nor is he required to keep them on npm. Stop take a step back before you start scolding him.

@joshmanders Also truth.

While it's @azer's right to unpublish the modules, it is also the ecosystem's right to voice frustrations.

@michaelshobbs My recommendation would be to upgrade your Babel version to the latest of whichever major version you are on.

npm install azer/left-pad.git#bff80e3ef0db0bfaba7698606c4f623433d14355  worked for us.
credits to @maxkostow

hrm, unfortunately not using babel-core. instead, we're pulling in a bunch of babel-* deps.... :(

This just started working for me
$ npm --registry https://registry.npmjs.org install<EMAIL_ADDRESS><EMAIL_ADDRESS>node_modules/left-pad

@michaelshobbs You've definitely got babel-core in there somewhere :) Feel free to drop by our support channel on Slack if you want more direct help.

Nobody to thank @azer for these few but so heavily used lines of code. Kinda disappointing.

Ah, and it does appear that the re-publish of 0.0.3 has been completed. Hopefully that can be the final fix.
Thank you everyone for bringing the issue to us. On the plus side, it's always nice to hear from ours users :P

While it's @azer's right to unpublish the modules, it is also the ecosystem's right to voice frustrations.

@ngokevin, rather than voicing frustrations or settling for quick fixes, we should be proposing and implementing long-term solutions, so this doesn't happen again.

@loganfsmyth ah most likely a sub-sub-sub-dep ;P
seems to be working now. thanks!

don't use simple things you could just write yourself.

Full list of unpublished npm modules here: https://gist.githubusercontent.com/isaacs/a22e61c7e1910022b10b/raw/19b7ff9c497990bac4cfea30b92e27e1998946d9/gistfile.txt

@pippinlee getting a 404

Confirmed that npm install<EMAIL_ADDRESS>is now working

ZOMG the list of unpublished npm modules WAS UNPUBLISHED!

Prime time for pushing ES2016 usage. https://jsfeatures.in/#ES7-string-prototype-padleft

So apparently npm packages aren't hard to steal:
https://www.npmjs.com/package/kik
:trollface:

The list is on https://gist.githubusercontent.com/azer/db27417ee84b5f34a6ea/raw/50ab7ef26dbde2d4ea52318a3590af78b2a21162/gistfile1.txt

^ The list of unpublished npm modules was un-un-published ?

@lukebrooker good luck with lawyers!

https://twitter.com/seldo/status/712427318870839296

even if you want your code gone, someone will just put it back, lmao.

don't use simple things you could just write yourself.

As much fun as it would be to reinvent & retest the entire world, assuming I had no actual work to do, seems that a single incident such as this in the entire history of npm isn't a reason to just throw it all out the window...

If you want to depend on a person's work, be prepared to deal with the consequences of the person's actions over their work.

@jasonroelofs Copyright law is different in every country. Company names are different in every country. I guarantee you, if you've published code, you have published to a package that is already trademarked in a country, somewhere around the world.
Personally, I think this was a very good, very strong message to send to the Open Source community. It is time for copyright reform, and it is time for companies like github, npm, etc to be protected from nonsense like this.
If KIK had an issue, they should be forced to take it up with the original repo owner. At that point, the judge should be forced to understand the impacts of "unpublishing" or "handing over" a repo.
Even "RealDonaldTrump" was forced to pick an alternative name for twitter. You don't see me stomping around because I'm older than that young whippersnapper that just registered my handle on that new social media site - You snooze, you lose.
Kik was a fairly small package, but what would you say if instead, "react" or "angular" or "handlebars" were forced to unpublish their packages, because all of those have different trademarks in different countries.

@kittens FYI
➜  left-pad git:(master) npm owner ls left-pad
sebmck<EMAIL_ADDRESS>westlac<EMAIL_ADDRESS>

@dolkensp I'm no lawyer, but my understanding is that this is exactly what the "safe harbour" part of the DMCA is for.

NPM should really not allow removing of previously published versions.... surely?

Definitely agree with this. I don't know of any other major package management system that lets you completely delete a package that has been published, other than in very rare scenarios (like a module being backdoored). Neither NuGet nor Packagist allow deletion of packages, for example.

@jamietre this happens all the time, same with sec issues and bugs, but ultimately you will have to face what @Lana-chan stated. To avoid this you have three ways:

Self hosted npm registry
Write your own module
Clone & link to clone

FYI https://github.com/camwest/left-pad is published now.

I'm no lawyer, but my understanding is that this is exactly what the "safe harbour" part of the DMCA is for.

Nope. "safe harbour" is only for the DMCA. "kik" package is trademark related, not copyright.

@nijikokun

don't use simple things you could just write yourself.

I'll just leave this here. https://en.wikipedia.org/wiki/Unix_philosophy

@deoxxa Yes, and companies should be able to confidently rely on safe harbour, instead of bending to the will of patent lawyers.
The recent Apple v FBI case is a good example of why a company like npm SHOULD be scared - there's no precedents that will guarantee that a company like npm WONT be sued, and have to waste money defending itself, and even if there were, there are too many loopholes for conniving lawyers to try and wiggle their way through.
If the clause was as clear cut as "only the original publisher of material may be prosecuted", then we wouldn't have a problem, but RIAA,MPAA would never allow that - it would cut into their bottom line too much.

so everything should be pretty good until Left Pad Inc makes a trademark claim, right?

Stolen back already: https://www.npmjs.com/package/kik

^ That is definitely not cool on NPMs part.

I think this opens a good discussion for FOSS. What if a package (assuming the dependency was to the last version, instead of a fixed revision) was edited to do something completely different instead of just removed, would it still be okay for an organization to step in and revert it over the author's wishes? At what point do we stop this from becoming a Wikipedia edit war?

@lukebrooker

:warning:  Just a warning, a bunch of other @azer packages just got name squatted on npm by who knows who so watch out when updating your package.json files.

Just a warning, a bunch of other @azer packages just got name squatted on npm by who knows who so watch out when updating your package.json files.

This is why we can't have nice things.

@Daniel15 actually, the ability to unpublish is why we can't have nice things. Plenty of FOSS package systems out there that would handle this just fine.

More tools for Github issues they said  Will cut down on +1's they said.
Also just leaving this here.
http://ruby-doc.org/core-2.3.0/String.html#method-i-rjust

@dolkensp Yeah, to be clear I was referring to other people namesquatting, as the new packages will be pulled in for any package.json whose version range matches. An ideal package management system would be able to tell that the new (namesquatted) package is not signed with the same key as the older package, and at least warn you about it. npm packages aren't verifiable due to the lack of a signature on the packages.

https://github.com/npm/npm/pull/12017

@nijikokun sure, but I was responding to the notion of writing everything trivial yourself to avoid this, not that nothing will ever go wrong.
I doubt any car manufacturers are going to make their own airbags even though Takata screwed the pooch for millions of drivers. You accomplish much more by leveraging the work of others. Yes it comes with risks. They are minute compared to the risk of having to reinvent & test every 3rd party library I use.

Just a warning, a bunch of other @azer packages just got name squatted on npm by who knows who so watch out when updating your package.json files.

Just going to re-post this to help us validate our builds: https://gist.githubusercontent.com/azer/db27417ee84b5f34a6ea/raw/50ab7ef26dbde2d4ea52318a3590af78b2a21162/gistfile1.txt
Is there a possibility that these packages could turn malicious, and everyone who relied on them is in big trouble after their next npm install? :fearful:

@jacksonrayhamilton Yes, it's absolutely possible. NPM modules can run arbitrary commands on installation.

Can npm run rm -rf / ?

Yes.

@drewhamlett https://docs.npmjs.com/misc/scripts#current-lifecycle-event see post-install

@SomeoneWeird  @zerkms  Ok cool.  Thanks.  I guess you would need to run it as sudo for it to work though.

Is there a possibility that these packages could turn malicious, and everyone who relied on them is in big trouble after their next npm install? :fearful:

Yes: https://news.ycombinator.com/item?id=11341006

@drewhamlett so any module installed in the normal sudo'd global way would be able to do anything. Another good reason to use nvm.

PR on NPM to resolve this here: https://github.com/npm/npm/pull/12017

@tlrobinson 2 links to the PR were more than enough, really.

@drewhamlett doesn't stop it wiping out your home directory, including all your ssh keys etc (you have backups, right?)

"Unpublish considered harmful"
^ If you agree upvote the "Dear NPM" PR

No, let's post it again! Maybe it'll fix itself!

Here's a quick script to check if you depended on any of @azer's packages (tested with<EMAIL_ADDRESS>and npm@3.7.3). If you find any, you should confirm they are still safe.
#!/usr/bin/env bash
curl https://gist.githubusercontent.com/azer/db27417ee84b5f34a6ea/raw/50ab7ef26dbde2d4ea52318a3590af78b2a21162/gistfile1.txt \
    | sed 's/^\(.*\)$/ \1@/' \
    > ~/suspicious-packages.txt \
    && npm ls \
    | grep -f ~/suspicious-packages.txt

@tlrobinson The PR doesn't matter - npm is going to address this issue the same way they addressed long-file-paths in windows - "Not our problem, go away"

Didn't they address long file paths in Windows by releasing a flat node_modules structure? That's the exact pain-staking opposite of "Not our problem, go away".

List of number of packages depending on those unpublished by @azer: https://gist.github.com/tlrobinson/05d2354a71f5491d2f5a

Didn't really expect to spend the last hours of my day cleaning up after another's tantrum.

@aduth so you're happy to use someone's code that they shared with the world for free, and you feel that your investment of $0 entitles you to some standard of service?

@davidmason Oh here we go again.  Thanks a bunch.

If anyone is confused about @davidmason's comment, it was in reference to a now-deleted reply. Anyone who has email notifications turned on in this thread probably has a copy in their inbox.

Open source should not be oppressed. Though it cost others time, you have the reason to do that.

@davidmason the suck it up, you didn't earn it, move on mentality contributes negatively to the validity and trustworthiness of the OSS community.

@joeandaverde the "you made it, you have to support the way I use it" mentality contributes negatively to the experience of being a part of the OSS community.

Safe harbor just means that NPM is safe (somewhat) from prosecution even if someone hosts copyrighted works on NPM. It doesn't mean they don't have to act on behalf of trademark / copyright owners.

@jacksonrayhamilton thanks for the script; I made a tweak to output the full install path for any of @azer's packages found in a project:
#!/usr/bin/env bash
curl https://gist.githubusercontent.com/azer/db27417ee84b5f34a6ea/raw/50ab7ef26dbde2d4ea52318a3590af78b2a21162/gistfile1.txt \
    | sed 's/^\(.*\)$/\/\1$/' \
    > ~/suspicious-packages.txt \
    && npm ls --parseable \
    | grep -f ~/suspicious-packages.txt

This gave me the output:
/Users/jackwanders/some-project/node_modules/babel/node_modules/babel-core/node_modules/line-numbers/node_modules/left-pad

Hopefully this might help others determine how to proceed if they are relying on any of these packages.

Surely Kik could have just spent 5 seconds to realise that the NPM package had nothing to do with anything related to them.  Solid effort on notifying a bunch of people as to what happened though.
Like others have said, his code can do what he wants with it, it's open source if you wish to republish then do so, rather than complain.

We ends up upgrading our babel-jest to solve the left-pad issues, and my co-worker just swear next to me :)
    "babel-jest": "9.0.x",

This is a great example of why decentralizing the package hosting can solve the problem. If package hosting were done via a technology such as zeronet and torrents, this could be entirely avoided.
I'll be looking into this in the coming months.

@azer transfer the module to me please :smile: since I'm the only other author of the module :grinning:

https://github.com/azer/left-pad/graphs/contributors

@stevemao is the new owner of the module, not sure how he can take the npm ownership.

Thanks @azer :+1:

Thanks @azer, you did right thing which makes us understand how the npm is dangerous to us, open source developers.
To be honest, great work!

@KoryNunn @SomeoneWeird @zerkms @drewhamlett If you run npm as root, it'll process.setuid() to a nobody user. https://docs.npmjs.com/misc/scripts#user

@isaacs that is really good. There are however many other malicious things that can be done without sudo, like grabbing private keys.

We're with you @azer!
<EMAIL_ADDRESS>

I don't wanna imagine what happens when tomorrow someone trademarks Lodash and wreaks havoc. :boom:
Maybe it's time to add an exclusion clause to Open Source licenses for companies like Kik?
BTW: Ask one of 80 million germans about Kik and they'll recognize a completely different company.

@f teşekkür ederim anlayışın ve desteğin için Fatih :)

This is why Docker exists. Because dependency management is trouble. Pack it all into one package. Do we need a Docker for JS?

@winterbe

I don't wanna imagine what happens when tomorrow someone trademarks Lodash and wreaks havoc.

I can tell you we wouldn't stage a protest on the backs of our users or the community. Lodash got to where it is, in large part, because it built user trust over a long period of time (4 yrs), no romantic versioning, no funny business. Just quality, modular, utils.

1.1.0 is released :)


Python 3.7 support

Issue: When can we expect python 3.7 support?
I see that tensorflow 1.12 is required for installing the tensorflow pipeline. Are there any breaking changes in tensorflow 1.13 which is preventing the upgrade to tensorflow 1.13?
The rest of my team is switching so python 3.7 support would be nice.

Thanks for raising this issue, @tmbo  will get back to you about it soon.

Yes, def - thanks for the headsup wasn't aware that the new 1,13rc1 finally contains this (ref https://github.com/tensorflow/tensorflow/issues/17022).
So I guess it is time for us to support it as well :rocket: - I'll create a branch and a WIP PR just to check if tests pass.

Good news: 1.13.1 is released now, no longer just RC:
https://github.com/tensorflow/tensorflow/releases/tag/v1.13.1

awesome, @Ghostvv how did the 1.13 tensorflow work out for you locally?

I installed the latest version of numpy with pip install -U numpy and there were another library, I don't remember, also upgraded to latest


Add debug package

The debug package provides the following functionality:

Mounting an endpoint on a HTTP mux to turn on or off debug logs.
Mounting an endpoint on a HTTP mux to turn on or off pprof handlers.
A Goa endpoint middleware that logs requests and results.

Codecov Report

Merging #178 (2e0747f) into main (a7acae8) will increase coverage by 0.22%.
The diff coverage is 94.65%.

@@            Coverage Diff             @@
##             main     #178      +/-   ##
==========================================
+ Coverage   91.90%   92.12%   +0.22%
==========================================
  Files          28       31       +3
  Lines        1495     1626     +131
==========================================
+ Hits         1374     1498     +124
- Misses         89       95       +6
- Partials       32       33       +1

Flag
Coverage Δ

micro
92.12% <94.65%> (+0.22%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

log/options.go
87.50% <0.00%> (-6.74%)
:arrow_down:

log/context.go
75.75% <66.66%> (-3.41%)
:arrow_down:

debug/debug.go
100.00% <100.00%> (ø)

debug/grpc.go
100.00% <100.00%> (ø)

debug/options.go
100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more