Can not init api (ACME, lets encrypt)

Bug description
The ACME process does not start because it has issues with the API (lets encrypt).
acme-companion image version
Info: running acme-companion version v2.2.0-7-g3137221

nginx-proxy's Docker configuration
version: '3.8'
services:
  proxy-server: # Reverse proxy
    image: nginxproxy/nginx-proxy
    restart: always
    ports:
        - "80:80"
        - "443:443"
    networks:
        - sub
    volumes:
        - /var/run/docker.sock:/tmp/docker.sock:ro
        - certs:/etc/nginx/certs:ro
        - vhost:/etc/nginx/vhost.d
        - html:/usr/share/nginx/html
        - ./filesize.conf:/etc/nginx/conf.d/filesize.conf
    labels:
        com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: ""

    logging:
        driver: "json-file"
        options:
            max-file: "3"
            max-size: "10m"
  proxy-letsencrypt: # Let's encrypt part which interacts with webserver and docker engine
    image: nginxproxy/acme-companion
    restart: always
    networks:
        - sub
    environment:
        - DEFAULT_EMAIL=${LE_DEFAULT_EMAIL}
        - NGINX_PROXY_CONTAINER=proxy-server
    volumes:
        - /var/run/docker.sock:/var/run/docker.sock:ro
        - certs:/etc/nginx/certs:rw
        - vhost:/etc/nginx/vhost.d
        - html:/usr/share/nginx/html
        - acme:/etc/acme.sh
    logging:
        driver: "json-file"
        options:
            max-file: "1"
            max-size: "1m"

volumes:
    certs:
    vhost:
    html:
    acme:

networks:
    sub:

rendered nginx configuration
Please provide the rendered nginx configuration:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
# configuration file /etc/nginx/nginx.conf:

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;

events {
    worker_connections  10240;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}
daemon off;

# configuration file /etc/nginx/mime.types:

types {
    text/html                                        html htm shtml;
    text/css                                         css;
    text/xml                                         xml;
    image/gif                                        gif;
    image/jpeg                                       jpeg jpg;
    application/javascript                           js;
    application/atom+xml                             atom;
    application/rss+xml                              rss;

    text/mathml                                      mml;
    text/plain                                       txt;
    text/vnd.sun.j2me.app-descriptor                 jad;
    text/vnd.wap.wml                                 wml;
    text/x-component                                 htc;

    image/avif                                       avif;
    image/png                                        png;
    image/svg+xml                                    svg svgz;
    image/tiff                                       tif tiff;
    image/vnd.wap.wbmp                               wbmp;
    image/webp                                       webp;
    image/x-icon                                     ico;
    image/x-jng                                      jng;
    image/x-ms-bmp                                   bmp;

    font/woff                                        woff;
    font/woff2                                       woff2;

    application/java-archive                         jar war ear;
    application/json                                 json;
    application/mac-binhex40                         hqx;
    application/msword                               doc;
    application/pdf                                  pdf;
    application/postscript                           ps eps ai;
    application/rtf                                  rtf;
    application/vnd.apple.mpegurl                    m3u8;
    application/vnd.google-earth.kml+xml             kml;
    application/vnd.google-earth.kmz                 kmz;
    application/vnd.ms-excel                         xls;
    application/vnd.ms-fontobject                    eot;
    application/vnd.ms-powerpoint                    ppt;
    application/vnd.oasis.opendocument.graphics      odg;
    application/vnd.oasis.opendocument.presentation  odp;
    application/vnd.oasis.opendocument.spreadsheet   ods;
    application/vnd.oasis.opendocument.text          odt;
    application/vnd.openxmlformats-officedocument.presentationml.presentation
                                                     pptx;
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
                                                     xlsx;
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                     docx;
    application/vnd.wap.wmlc                         wmlc;
    application/wasm                                 wasm;
    application/x-7z-compressed                      7z;
    application/x-cocoa                              cco;
    application/x-java-archive-diff                  jardiff;
    application/x-java-jnlp-file                     jnlp;
    application/x-makeself                           run;
    application/x-perl                               pl pm;
    application/x-pilot                              prc pdb;
    application/x-rar-compressed                     rar;
    application/x-redhat-package-manager             rpm;
    application/x-sea                                sea;
    application/x-shockwave-flash                    swf;
    application/x-stuffit                            sit;
    application/x-tcl                                tcl tk;
    application/x-x509-ca-cert                       der pem crt;
    application/x-xpinstall                          xpi;
    application/xhtml+xml                            xhtml;
    application/xspf+xml                             xspf;
    application/zip                                  zip;

    application/octet-stream                         bin exe dll;
    application/octet-stream                         deb;
    application/octet-stream                         dmg;
    application/octet-stream                         iso img;
    application/octet-stream                         msi msp msm;

    audio/midi                                       mid midi kar;
    audio/mpeg                                       mp3;
    audio/ogg                                        ogg;
    audio/x-m4a                                      m4a;
    audio/x-realaudio                                ra;

    video/3gpp                                       3gpp 3gp;
    video/mp2t                                       ts;
    video/mp4                                        mp4;
    video/mpeg                                       mpeg mpg;
    video/quicktime                                  mov;
    video/webm                                       webm;
    video/x-flv                                      flv;
    video/x-m4v                                      m4v;
    video/x-mng                                      mng;
    video/x-ms-asf                                   asx asf;
    video/x-ms-wmv                                   wmv;
    video/x-msvideo                                  avi;
}

# configuration file /etc/nginx/conf.d/default.conf:
# nginx-proxy version : 1.0.0-8-g0442ed9
# If we receive X-Forwarded-Proto, pass it through; otherwise, pass along the
# scheme used to connect to this server
map $http_x_forwarded_proto $proxy_x_forwarded_proto {
  default $http_x_forwarded_proto;
  ''      $scheme;
}
# If we receive X-Forwarded-Port, pass it through; otherwise, pass along the
# server port the client connected to
map $http_x_forwarded_port $proxy_x_forwarded_port {
  default $http_x_forwarded_port;
  ''      $server_port;
}
# If we receive Upgrade, set Connection to "upgrade"; otherwise, delete any
# Connection header that may have been passed to this server
map $http_upgrade $proxy_connection {
  default upgrade;
  '' close;
}
# Apply fix for very long server names
server_names_hash_bucket_size 128;
# Default dhparam
ssl_dhparam /etc/nginx/dhparam/dhparam.pem;
# Set appropriate X-Forwarded-Ssl header based on $proxy_x_forwarded_proto
map $proxy_x_forwarded_proto $proxy_x_forwarded_ssl {
  default off;
  https on;
}
gzip_types text/plain text/css application/javascript application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
log_format vhost '$host $remote_addr - $remote_user [$time_local] '
                 '"$request" $status $body_bytes_sent '
                 '"$http_referer" "$http_user_agent" '
                 '"$upstream_addr"';
access_log off;
		ssl_protocols TLSv1.2 TLSv1.3;
		ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
		ssl_prefer_server_ciphers off;
error_log /dev/stderr;
# HTTP 1.1 support
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $proxy_connection;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $proxy_x_forwarded_proto;
proxy_set_header X-Forwarded-Ssl $proxy_x_forwarded_ssl;
proxy_set_header X-Forwarded-Port $proxy_x_forwarded_port;
proxy_set_header X-Original-URI $request_uri;
# Mitigate httpoxy attack (see README for details)
proxy_set_header Proxy "";
server {
	server_name _; # This is just an invalid value which will never trigger on a real hostname.
	server_tokens off;
	listen 80;
	access_log /var/log/nginx/access.log vhost;
	return 503;
}
server {
	server_name _; # This is just an invalid value which will never trigger on a real hostname.
	server_tokens off;
	listen 443 ssl http2;
	access_log /var/log/nginx/access.log vhost;
	return 503;
	ssl_session_cache shared:SSL:50m;
	ssl_session_tickets off;
	ssl_certificate /etc/nginx/certs/default.crt;
	ssl_certificate_key /etc/nginx/certs/default.key;
}
	# tasks.coypu.org
	upstream tasks.coypu.org {
        # Cannot connect to network 'redmine_db' of this container
        # Cannot connect to network 'redmine_smtp' of this container
        ## Can be connected with "reverseproxy_sub" network
        # redmine_redmine_1
        server <IP_ADDRESS>:3000;
	}
server {
	server_name tasks.coypu.org;
	listen 80 ;
	access_log /var/log/nginx/access.log vhost;
location / {
		proxy_pass http://tasks.coypu.org;
}
}
server {
	server_name tasks.coypu.org;
	listen 443 ssl http2 ;
	access_log /var/log/nginx/access.log vhost;
	return 500;
	ssl_certificate /etc/nginx/certs/default.crt;
	ssl_certificate_key /etc/nginx/certs/default.key;
}

# configuration file /etc/nginx/conf.d/filesize.conf:
client_max_body_size 50M;

Containers logs
Companion:
Info: running acme-companion version v2.2.0-7-g3137221
Generating a RSA private key
.................................................................................................++++
...++++
writing new private key to '/etc/nginx/certs/default.key.new'
-----
Reloading nginx proxy (bef8952eecb051329d16d832c099240b37320a9daf617967bd8ec92aafe37ce4)...
2022/03/28 14:28:11 Generated '/etc/nginx/conf.d/default.conf' from 6 containers
2022/03/28 14:28:11 [notice] 109#109: signal process started
Info: a default key and certificate have been created at /etc/nginx/certs/default.key and /etc/nginx/certs/default.crt.
Info: Setting up 4096 bits RFC7919 Diffie-Hellman group...
Reloading nginx proxy (bef8952eecb051329d16d832c099240b37320a9daf617967bd8ec92aafe37ce4)...
2022/03/28 14:28:11 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification ''
2022/03/28 14:28:11 [notice] 153#153: signal process started
2022/03/28 14:28:11 Generated '/app/letsencrypt_service_data' from 6 containers
2022/03/28 14:28:11 Running '/app/signal_le_service'
2022/03/28 14:28:11 Watching docker events
2022/03/28 14:28:11 Contents of /app/letsencrypt_service_data did not change. Skipping notification '/app/signal_le_service'
[Mon Mar 28 14:30:22 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:30:22 UTC 2022] Can not init api for: https://acme-v02.api.letsencrypt.org/directory.
[Mon Mar 28 14:30:22 UTC 2022] Create account key ok.
[Mon Mar 28 14:30:22 UTC 2022] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Mon Mar 28 14:32:33 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:32:33 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:34:46 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:34:46 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:36:59 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:36:59 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:39:12 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:39:12 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:41:25 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:41:25 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:43:38 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:43:38 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:45:51 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:45:51 UTC 2022] Could not get nonce, let's try again.
[Mon Mar 28 14:48:05 UTC 2022] Please refer to https://curl.haxx.se/libcurl/c/libcurl-errors.html for error code: 28
[Mon Mar 28 14:48:05 UTC 2022] Could not get nonce, let's try again.

Nginx:
Info: running nginx-proxy version 1.0.0-8-g0442ed9
Setting up DH Parameters..
forego      | starting dockergen.1 on port 5000
forego      | starting nginx.1 on port 5100
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: using the "epoll" event method
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: nginx/1.21.6
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: OS: Linux 5.4.0-104-generic
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: getrlimit(RLIMIT_NOFILE): 1048576:1048576
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: start worker processes
...
dockergen.1 | 2022/03/28 14:28:10 Generated '/etc/nginx/conf.d/default.conf' from 6 containers
dockergen.1 | 2022/03/28 14:28:10 Running 'nginx -s reload'
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: signal 1 (SIGHUP) received from 58, reconfiguring
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: reconfiguring
dockergen.1 | 2022/03/28 14:28:10 Watching docker events
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: using the "epoll" event method
nginx.1     | 2022/03/28 14:28:10 [notice] 20#20: start worker processes
...
dockergen.1 | 2022/03/28 14:28:10 Contents of /etc/nginx/conf.d/default.conf did not change. Skipping notification 'nginx -s reload'
...
nginx.1     | tasks.coypu.org <IP_ADDRESS> - - [28/Mar/2022:14:49:30 +0000] "GET / HTTP/1.1" 302 135 "-" "Go-http-client/1.1" "<IP_ADDRESS>:3000"
nginx.1     | tasks.coypu.org <IP_ADDRESS> - - [28/Mar/2022:14:49:30 +0000] "GET /login?back_url=http%3A%2F%2Ftasks.coypu.org%2F HTTP/1.1" 200 6841 "http://<IP_ADDRESS>" "Go-http-client/1.1" "<IP_ADDRESS>:3000"

Docker host

OS: Ubuntu 9.3.0-17ubuntu1~20.04
Docker version: Docker version 20.10.13, build a224086

Seeing this too. Did you ever figure it out?

I did, thanks for reminding.
I solved it by deactivating the ufw, recreating the docker network (sub) used by the proxy and activate ufw again.

Facing the same problem currently. UFW is inactive.


pip is not working

Expected Behaviour

Actual Behavior

Steps to Reproduce the Problem

Specifications

i try pip install pybotics in command line
i got this message ( pip is not recognized as internal or external command

The error message pip is not recognized as internal or external command usually means that pip  and Python are not properly installed on your system
Try running the following command: python -V, what output does it give? If that doesn't work, run python3 -V
Follow this link (https://docs.python.org/3/installing/index.html) on how python packages are installed

I installed python and pycharm and its working fine, i think might be I missed some components or having problem in path setting, i am going to check and see

this is path where i installed python
C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64

While your installation is working, it's currently under your Visual Studio install. I'd recommend installing Python the standard way: https://www.python.org/downloads/
Your install with then look like this: C:\Users\nicholas\AppData\Local\Programs\Python\Python36\python.exe


docker-java 3.0.0 API implementation

@orzeh good start. Why the change from the default 'http' to 'tcp'?

docker-java now forces tcp:// or unix://
We should decide if plugin should be backwards compatible and convert http(s) to tcp on the fly.

@orzeh interesting. Yeah we'll have to do some sort of conversion otherwise we will break backwards compatibility with existing scripts.

I'll take care of it.

@orzeh added a few comments to address. All in all the code looks good. No real "gotchas". Great job so far.

@cdancy fixed most of issues you pointed out. Also added conversion of Docker host URLs to be backward compatible.

@cdancy I've polished the code. If it is OK, I can squash it to single commit.

@orzeh one minor comment to address then yes please squash.

@cdancy I`m done

@orzeh merged and thanks! Are you able to build and host locally somewhere? I could look into hosting this branch/build on jcenter for extra testing if you can't.

@cdancy I can host it on our corporate Nexus and plug it into our builds to see if it works. I let you know if there are some issues.

@cdancy @orzeh Just wanted to jump in here and thank you for the work on this! I built your branch and published locally and can now use the plugin with docker 1.10. If you need any help testing let me know, if I find any bugs I'll submit a PR on your fork.

If only we could get @marcuslinke to release 3.0.0 ...

@cdancy ...finally it's done. Just released 3.0.0.

Well I'll be damned ;) Thanks @marcuslinke. Others on this thread: I'll rebase off of 3.0.0 in this dev branch, and assuming no issues (we've been using the RC without any problems here), I'll push to gradle-docker-plugin sometime this weekend.


Unable to run example following readme

Hi, running the instructions from the README.md results in the following error using python 3.10
textx.exceptions.TextXSyntaxError: /tcenas/home/ramih/repos/strictdoc-examples/examples/example_08.sdoc:6:6: Expected ' ' => '-001 REFS:* - TYPE: F'

That works, thanks!

Closed by https://github.com/strictdoc-project/strictdoc-examples/pull/5.


Improve multisig readme examples #1055

Description
As someone who's looking to utilise this sdk for their application it is vital that they are able to understand the how to utilise the various packages. This pull request updates the Multi-sig transaction examples in the transaction package readme in an effort to make it more clear and ensure proper understanding.
For details refer to issue #1055
Type of Change

[ ] New feature
[ ] Bug fix
[x] API reference/documentation update
[ ] Other

Does this introduce a breaking change?
No breaking change
Are documentation updates required?
No.
Testing information
None.
Checklist

[ ] Code is commented where needed
[ ] Unit test coverage for new or modified code paths
[ ] npm run test passes
[ ] Changelog is updated
[x] Tag 1 of @yknl or @zone117x for review

Will create a new issue , closing this one

Which broadcast issue is that?


DOC/README: please officially make this a general working extension

Now, that it also works with Theia. both offline and online (just tested) it would be a good opportunity to adjust the README and the repo summary.
@spgennard are you accepting a PR to do this? It would effectively drop/replace "Visual Studio Code" in some places (while keeping it or replace it to "vscode" or "vscode-based editors" in other places).
Originally posted by @GitMensch in https://github.com/spgennard/vscode_cobol/issues/123#issuecomment-622936878

I would need to try out Theia, as I concerned that some of the features in the extension may not work too well, as it uses "node" to access the file system rather than using apis provided by vscode.
The bottom line, is that I would need to feel comfortable with it before documenting I support it.

Sounds perfectly fine (I'd still vote for an "experimental support" note and for replacing "Visual Studio Code" (the product build on top of vscode + the "Visual Studio Code Marketplace", proprietary extensions and telemetry packaged as proprietary executables you are not able to share) by vscode (which actually provides nearly all the goodies we use).


Error: Invalid count argument

│ Error: Invalid count argument
│
│   on .terraform/modules/vpc-peering-multi-account/accepter.tf line 68, in data "aws_route_table" "accepter":
│   68:   count     = local.accepter_enabled ? local.accepter_subnet_ids_count : 0
│
│ The "count" value depends on resource attributes that cannot be determined
│ until apply, so Terraform cannot predict how many instances will be created.
│ To work around this, use the -target argument to first apply only the
│ resources that the count depends on.
╵
╷
│ Error: Invalid count argument
│
│   on .terraform/modules/vpc-peering-multi-account/requester.tf line 122, in data "aws_route_table" "requester":
│  122:   count     = local.enabled ? local.requester_subnet_ids_count : 0
│
│ The "count" value depends on resource attributes that cannot be determined
│ until apply, so Terraform cannot predict how many instances will be created.
│ To work around this, use the -target argument to first apply only the
│ resources that the count depends on.
╵

terraform {
required_providers {
aws = {
version = "3.74.1"
}
}
}
provider "aws" {
London
region = "eu-west-2"
}
provider "aws" {
alias = "eu-west-2"
London
region = "eu-west-2"
}
provider "aws" {
alias = "us-west-1"
California
region = "us-west-1"
}
#Create VPC in us-west-1
resource "aws_vpc" "vpc_uswest" {
provider             = aws.us-west-1
cidr_block           = "<IP_ADDRESS>/16"
enable_dns_support   = true
enable_dns_hostnames = true
}
#Create VPC in eu-west-2
resource "aws_vpc" "vpc_euwest" {
provider             = aws.eu-west-2
cidr_block           = "<IP_ADDRESS>/16"
enable_dns_support   = true
enable_dns_hostnames = true
}
resource "aws_iam_role" "test_role" {
name = "cross_region_vpc_peering"
Terraform's "jsonencode" function converts a
Terraform expression result to valid JSON syntax.
assume_role_policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = "sts:AssumeRole"
Effect = "Allow"
Sid    = ""
Principal = {
"AWS" : "arn:aws:iam::426005093346:user/kiril"
}
}]
})
}
module "vpc-peering-multi-account" {
source = "cloudposse/vpc-peering-multi-account/aws"
//  version = "0.5.0"
insert the 4 required variables here
accepter_region               = var.accepter_region
accepter_vpc_id               = aws_vpc.vpc_uswest.id
requester_aws_assume_role_arn = aws_iam_role.test_role.arn
requester_region              = var.requester_region
requester_vpc_id              = aws_vpc.vpc_euwest.id
}
resource "aws_subnet" "subnet_1_us" {
provider = aws.us-west-1
availability_zone = element(data.aws_availability_zones.azs.names, 0)
vpc_id     = aws_vpc.vpc_uswest.id
cidr_block = "<IP_ADDRESS>/24"
}
resource "aws_subnet" "subnet_1_eu" {
//  provider   = aws.eu-west-2
vpc_id            = aws_vpc.vpc_euwest.id
cidr_block        = "<IP_ADDRESS>/24"
availability_zone = "eu-west-2a"
}
resource "aws_route_table" "route_table_us" {
provider = aws.us-west-1
vpc_id   = aws_vpc.vpc_uswest.id
//  route {
//    cidr_block = "<IP_ADDRESS>/0"
//    gateway_id = aws_internet_gateway.igw-us.id
//  }
//    route {
//    cidr_block                = "<IP_ADDRESS>/24"
//    vpc_peering_connection_id = aws_vpc_peering_connection.eu-us-peering.id
//  }
lifecycle {
ignore_changes = all
}
tags = {
Name = "US-Region-RT"
}
}
resource "aws_main_route_table_association" "set-us-default-rt-assoc" {
provider       = aws.us-west-1
vpc_id         = aws_vpc.vpc_uswest.id
route_table_id = aws_route_table.route_table_us.id
}
resource "aws_route_table" "route_table_eu" {
provider = aws.eu-west-2
vpc_id   = aws_vpc.vpc_euwest.id
/*  route {
cidr_block = "<IP_ADDRESS>/0"
gateway_id = aws_internet_gateway.igw-eu.id
}
route {
cidr_block                = "<IP_ADDRESS>/24"
vpc_peering_connection_id = aws_vpc_peering_connection.eu-us-peering.id
}
*/
lifecycle {
ignore_changes = all
}
tags = {
Name = "EU-Region-RT"
}
}
resource "aws_main_route_table_association" "set-eu-default-rt-assoc" {
provider       = aws.eu-west-2
vpc_id         = aws_vpc.vpc_euwest.id
route_table_id = aws_route_table.route_table_eu.id
}

terraform2.zip

Having the same issue

I fixed some of the formatting above to make it readable.
This is most likely due to the subnets and vpc not already existing prior to creating the vpc peering.
In our current example, we only create the peering and assume the vpcs are already created.
https://github.com/cloudposse/terraform-aws-vpc-peering-multi-account/blob/master/examples/complete/main.tf
You may want to consider our other module which does support creating both vpcs and the peering connection.
https://github.com/cloudposse/terraform-aws-vpc-peering/blob/master/examples/complete/main.tf
Please comment and we can reopen the issue


rm install of unused packages

scipy, cython and numba are not used anymore in jupyter lesson, and they're not used anywhere else afaik

Thanks!


Update getting starting page with a minimal example & link to flytesnacks

https://github.com/lyft/flyte/issues/677

PTAL @kumare3

PTAL @kumare3


[2.1.3] Input.is_key_pressed(KEY_SHIFT) does not work for HTML5 exported projects

Operating system or device - Godot version:
Windows 64 bit - 2.1.3.stable.
Issue description:
The expected behavior is for Input.is_key_pressed(KEY_SHIFT) to return true when the Shift key is pressed in the browser. The actual behavior is that Input.is_key_pressed(KEY_SHIFT) always returns false.
Steps to reproduce:

Download the minimal example project.
Run the project inside the editor and press Shift. Notice that the Sprite disappears when Shift is pressed.
Export the project to HTML5, run the HTML5 exported project, and press Shift. Notice that the Sprite does not disappear.

Link to minimal example project:
shift-test.zip

Actually in your minimal example project it doesn't disappear in both the editor and the HTML5 exported project. You set the processing to false (set_process(false)). When I changed it to true, it worked as intended.
Also make sure, that your game window have focus (click with your mouse inside the game area, clicking on browser's title may not be enough).

@Listwon, oops you're right. I actually encountered this error when using event.is_action_pressed() originally and incorrectly tried to produce a simpler example using Input.is_key_pressed().
Here's an updated project file
and the corresponding html5 export.
In this example, I added "Shift" to the input map for the "ui_accept" action and used event.is_action_pressed('ui_accept') and event.is_action_released('ui_accept') to control the sprite's hidden value. When I tested again with this project, the sprite disappeared in the editor but not in the exported HTML5 project. Can you see if you are able to reproduce the same issue with this example now?

@kcaze hah, it's ok. Yeah, now I can reproduce it. "Shift" doesn't work in the exported HTML5 project. Other keys assigned by default to "ui_accept" (Enter, Space) work. Strange.

It also doesn't work for "Ctrl" and both "Alt" keys (on a side note: left "Alt" is mapped as "Menu", right "Alt" is mapped as "Control+Menu").

Is this still an issue in 3.x?

The 2.1 branch is no longer actively worked on by engine developers, unless critical fixes are needed for current games in production. As such we are now closing non-critical bug reports affecting only the 2.1 branch.
Please comment if this was incorrectly triaged and is still relevant in 3.x versions.


VirtualMachinesOperations doesn't support change of api versions

Azure China Cloud vm get api doesn't support '2016-04-30-preview' yet
CHINA_COMPUTE_CLIENT = ComputeManagementClient(
    credentials=CHINA_SP_CREDENTIALS,
    subscription_id=CHINA_SUB_ID,
    base_url="https://management.chinacloudapi.cn"
)

CHINA_VM_03 = CHINA_COMPUTE_CLIENT.virtual_machines.get(
    "testcases03", "ma03mnictest")
print "china vm 03", CHINA_VM_03

Message: No registered resource provider found for location 'chinaeast' and API version '2016-04-30-preview' for type 'virtualMachines'. The supported api-versions are '2015-05-01-preview, 2015-06-15, 2016-03-30'. The supported locations are 'chinanorth, chinaeast'.

Hi @jonasshen
Yes, the latest azure-mgmt-compute is build for public Azure  and the new Managed Disks feature. I totally understand this is frustrating for non-public Azure users and we are currently working to allow our packages to have multi-version support.
In the meantime you have several solutions:

Install an old package
0.32.1 is compatible with 2016-03-30. This is the approach I recommend right now for azure-mgmt-compute The version 0.33.0 you use has just the new Managed Disks feature otherwise the content is similar.

Keep using this package, but changing the api-version
api_version is an attribute of the operation group, so you can write:
CHINA_COMPUTE_CLIENT.virtual_machines.api_version = '2016-03-30'

This should allow you all basic operations, but there is a risk that the models of JSON described in the package does not fit what you will get from '2016-03-30', but it's unlikely for compute which is pretty stable backward compatible RestAPI.

I close this issue, I think I answered correctly to the initial question. Feel free to comment to re-open it if necessary, or open a new issue if you have any new problems.
Thank you,


[android] Duplicate some arm64 checks for aarch64.

@drodriguez Do we still need these changes?

I think it might be. In the case of AArch64 architectures (Linux, Android, Windows (?)), the CPU is called aarch64, not arm64, so the checks are not being done. It doesn't seem that the file haven't changed since the modifications were made, but I don't know if they still apply cleanly, or if they are correct for aarch64 anymore.
Is there interest in merging? I can try to rebase and check that it still works, if there's interest.

Seems like we can take this as-is
@swift-ci please smoke test

⛵


Use appdirs to choose the cache directory

Looks like it never aligned with ArtifactDB/gypsum-R@634d07e30f46090a13dfec76cbee0ac95fe19bab.

Duplicate of #5.


Add Spark auto-scaling

Similar to Qubole:  https://www.qubole.com/blog/product/benchmarking-auto-scaling-spark-clusters/

This is part of a larger effort for PipelineAI Advanced/Enterprise Edition.


EdgeX data is different after kuiper processing

Environment:

EdgeX Foundry Ireland release: v2.0.0
eKuiper version (e.g. 1.3.0): v1.2.1
Hardware configuration (e.g. lscpu): 64-bit Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz
OS (e.g. cat /etc/os-release): Elementary OS v6

What happened and what you expected to happen:
This is the data being sent by EdgeX's device-mqtt service to Redis:
{apiVersion='v2', deviceName='MQ_DEVICE', origin='1629330844003819484', profileName='Oracle-Test-Device-MQTT-Profile', sourceName='humidity', edgexReadings=[EdgexReading{binaryValue='null', deviceName='MQ_DEVICE', id='6907c231-9b10-4d5b-8d10-01e173446686', mediaType='', origin='1629330844003754666', resourceName='humidity', profileName='Oracle-Test-Device-MQTT-Profile', value='64', valueType='Int32'}]}
This is the data Kuiper is sending to Redis after processing:
{"apiVersion":"v2","id":"f8bd6e13-25b4-4cd2-85b6-85cac7f5909c","deviceName":"","profileName":"kuiperProfile","sourceName":"ekuiper-events","origin":1629330844010732167,"readings":[{"id":"c5cba92f-7666-44ed-8177-57e275dffce7","origin":1629330844011738874,"deviceName":"","resourceName":"humidity","profileName":"kuiperProfile","valueType":"Float64","binaryValue":null,"mediaType":"","value":"6.400000e+01"}]}
This is my Kuiper Rule:
curl -X POST
http://$kuiper_docker:$kuiper_port/rules
-H 'Content-Type: application/json'
-d '{
"id": "tempHumidity-rule",
"sql": "SELECT meta(*) AS edgex_meta, temperature, humidity FROM demo WHERE (temperature >= 60 AND temperature <= 80) OR (humidity >= 60 AND humidity <= 80)",
"actions": [
{
"log":{},
"edgex": {
"contentType": "application/json",
"host": "edgex-redis",
"messageType": "request",
"port": 6379,
"protocol": "redis",
"topic": "ekuiper-events",
"type": "redis"
}
}
]
}'
Kuiper is changing the data:

The deviceName is missing in the kuiper data, in both the payload and reading.
The profileName changes to kuiperProfile in the kuiper data in both the payload and reading.
The data type changes from Int32 to Float64
The value changes from Int32 to Float64

How to reproduce it (as minimally and precisely as possible):
A simulated MQTT device is sending data to the MQTT broker defined in the EdgeX Ireland release's docker-compose.  The values are all Int32's.  EdgeX is configured to use the redis message bus.  Core Data is not running.  EdgeX's device-mqtt is getting data from the MQTT broker and sending it to redis.  Kuiper is configured to get the data from redis, filter it, and send the data back to redis using the 'ekuiper-events' channel.
Anything else we need to know?:

@dmocek-o This is expected and well documented.  By default, eKuiper will overwrite the metadata as if itself is a virtual device. If you need to keep original metadata, you'll need to specify the metadata property and point to your selected field for meta. Check Keep original metadata.

It turns out I was missing one entry in my rule:
"metadata": "edgex_meta",
adding this solved my issue.


Email confirmation for PI Survey

When a user submits the PI survey, send them an email confirmation. The email confirmation should include the text from the confirmation popup, plus a copy of all fields that the user entered into the form.

@ryscher I sent you a test survey confirmation email. It shows up as coming from<EMAIL_ADDRESS>This is the new user/account that email team has created for us to use Gmail API. I will be requesting an alias for this email. Hopefully they will give us<EMAIL_ADDRESS>as the alias. The "Reply to" address has been set to<EMAIL_ADDRESS>I kind of like the email short and simple, without the data. Normally such emails don't include the survey/form information I think. Let me know what you think.


Cannot read property 'defaultButtonText' of undefined

Following your documentation I get this error in the console:
EXCEPTION: Uncaught (in promise): Error: Error in ./HomeComponent class HomeComponent - inline template:9:0 caused by: Cannot read property 'defaultButtonText' of undefined
TypeError: Cannot read property 'defaultButtonText' of undefined
    at DropdownMultiselectComponent.processOptions (http://localhost:8080/app.js:20446:25)
    at DropdownMultiselectComponent.ngOnInit (http://localhost:8080/app.js:20395:14)
    at Wrapper_DropdownMultiselectComponent.ngDoCheck (/DropdownMultiselectModule/DropdownMultiselectComponent/wrapper.ngfactory.js:32:53)
    at CompiledTemplate.proxyViewClass.View_HomeComponent0.detectChangesInternal
...

I used everything exactly like in your example
template:
<dropdown-multiselect
    [(ngModel)]="dropdownModel">
</dropdown-multiselect>

component:
import { Component, OnInit } from '@angular/core';
import { IDropdownItem } from 'ng2-dropdown-multiselect';

@Component({
    selector: 'app-home',
    templateUrl: './home.component.html',
    styleUrls: [
        './home.component.css'
    ]
})
export class HomeComponent implements OnInit {
    public dropdownModel: IDropdownItem[];

    ngOnInit() {
        this.dropdownModel = [
        {
            id: 1,
            label: 'Today',
            selected: false, // optional
            color: '#336699' // optional
        }
        // ...
    ];
    }
}

module:
import { FormsModule } from '@angular/forms';

import { HomeRoutingModule } from './home-routing.module';
import { HomeComponent } from './home.component';
import { DropdownMultiselectModule } from 'ng2-dropdown-multiselect';

@NgModule({
    declarations: [
        HomeComponent
    ],
    imports: [
        HomeRoutingModule,  DropdownMultiselectModule, FormsModule
    ],
    exports: [
        HomeComponent
    ]
})
export class HomeModule {
}

I am using a fresh angular2-webpack-starter

Hi dluk,
Sorry to hear you're having issues, i'll try to recreate and get back to you.
Regards,
Andy

Hi dluk,
I'm struggling to recreate this issue, I know this was an issue previously (see #4). What version are you using? v1.0.0 is the latest.
Regards,
Andy

Hi again,
Sorry, but I cannot even try to reproduce it because npm install fails when I add the v1.0.0. I get the error installing ng2-bootstrap 1.1.15 and I'm not alone facing this issue https://github.com/npm/npm/issues/15248
Though suggested workarounds from the referenced issue doesn't work for me.
When I remove the ng2-dropdown-multiselect package from package.json then npm install works.
Don't know if you can do anything about it.

Hi dluk,
Thanks for getting back to me. I'll look in to upgrading the library to the latest version of ng2-bootstrap tomorrow to see if this helps.  As a work around using the old version of ng2-dropdown-multiselect (I'm guessing this works for you?), if you add defaultButtonText to your configuration object with the default value (found in documentation) then it should work (untested).
Hope this helps for the time being, will aim to get something updated tomorrow.
Regards,
Andy

Hi dluk,
Sorry for the delay, busy time of year! I've migrated the library to support the latest version of ng2-bootstrap and angular 2.
I hope this resolves this issue, will leave this open for 7 days for feedback.
Regards,
Andy

Hey, @AndyMeps , just letting you know that I can replicate the issue as well. I'm using:
"ng2-dropdown-multiselect": "^1.1.0",
"ng2-bootstrap": "^1.1.16",
and getting the same error.
I've replicated @dluk 's example code and hitting the same wall they are. I'm using Angular 2.4.0 with Angular-CLI 1.0.0-beta.24

Hi thehashrocket,
I'll look in to this tonight. Out of curiousity, are you providing an IMultiselectConfig object to the control? Might be worth adding it if you're not and providing defaultButtonText. (See This Section of the README)

No, my component is super bare bones:
import { Component, OnInit } from '@angular/core';
import { IDropdownItem } from 'ng2-dropdown-multiselect';

@Component({
  selector: 'app-activity-home',
  templateUrl: './activity-home.component.html',
  styleUrls: ['./activity-home.component.css']
})
export class ActivityHomeComponent implements OnInit {

  public dropdownModel: IDropdownItem[];

  constructor() { }

  ngOnInit() {
    this.dropdownModel = [
      {
        id: 1,
        label: 'Today',
        selected: false, // optional
        color: '#336699' // optional
      },
      {
        id: 2,
        label: 'Tomorrow',
        selected: false, // optional
        color: '#336699' // optional
      }
      ];
  }

}

And in the view it is/was simply:
<dropdown-multiselect
    [(ngModel)]="dropdownModel">
</dropdown-multiselect>

Hi thehashrocket,
In that case I would do the following based on your example until I can get a new patch version to you:
import { Component, OnInit } from '@angular/core';
import { IDropdownItem, IMultiselectConfig } from 'ng2-dropdown-multiselect';

@Component({
  selector: 'app-activity-home',
  templateUrl: './activity-home.component.html',
  styleUrls: ['./activity-home.component.css']
})
export class ActivityHomeComponent implements OnInit {

  public dropdownModel: IDropdownItem[];
  public dropdownConfig: IMultiselectConfig;

  constructor() { }

  ngOnInit() {
    this.dropdownModel = [
      {
        id: 1,
        label: 'Today',
        selected: false, // optional
        color: '#336699' // optional
      },
      {
        id: 2,
        label: 'Tomorrow',
        selected: false, // optional
        color: '#336699' // optional
      }
    ];

    this.dropdownConfig = {};
  }

}

<dropdown-multiselect
    [(ngModel)]="dropdownModel"
    [dropdownConfig]="dropdownConfig">
</dropdown-multiselect>

Hope this helps,
Andy

Thanks, I'll give that a shot in a few minutes. Trying to get angular-cli and ng2-bootstrap to play niceley together again. Seems something has changed with AoT or something and they are having issues. . .

Sooo, I ran into a different issue, but i'll make a separate ticket for that one since it's unrelated to this. It's just more fun chasing Angular2 changes. lol.

No problem, did the fix I suggested resolve the 'defaultButtonText' of undefined then?
Cheers,
Andy

I couldn't test it thanks to the latest issue i ran into. :(
On Tue, Jan 10, 2017 at 8:25 AM Andy Mepham<EMAIL_ADDRESS>wrote:

No problem, did the fix I suggested resolve the 'defaultButtonText' of
undefined then?
Cheers,
Andy
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/AndyMeps/ng2-dropdown-multiselect/issues/8#issuecomment-271604314,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAU5UfMPuxR1UpsMF59XnN0Nj6WK-lvJks5rQ6LggaJpZM4LOkSh
.

Hi @AndyMeps ,
It works good in all features but I have a problem, I can change css of component but I can't change the css of "multiselect-container " and button . Any Help ?
Thank you in advance.


Add missing  closing-tag

Add missing  closing-tag in CTFd/themes/losctf/templates/base.html.

Thanks. ;-)


Lots of 'replicator.RemoteRequest' warnings (v1.3.0-23)

I'm seeing lots of these messages from my android app:
W/RemoteRequest: com.couchbase.lite.replicator.RemoteRequest {PUT, http://<IP_ADDRESS>:4986/sync_gateway/_local/6ae341151d5655a7f18337c7a605c380188483ae}: Got error status: 409 for http://<IP_ADDRESS>:4986/sync_gateway/_local/6ae341151d5655a7f18337c7a605c380188483ae. Reason: Conflict
There's nothing obviously wrong, what do they mean please?

409 indicates conflict. So document is conflicting.

I understand what a 409 is.  These warnings have started since upgrading from 1.2.1 to 1.3.x.   And if you take a look at the url it contains _local in the path.  I've what does _local mean, I don't have any local docs?  What can I do to investigate?

When I look at one of these docs it doesn't look like anything to do with my app:
...:4984/sync_gateway/_local/65a01129927a847dfe72245205bc820b36b2774e ->
{
_id: "_local/65a01129927a847dfe72245205bc820b36b2774e",
_rev: "0-378",
lastSequence: "71772"
}

Still getting lots of these with build 1.3.0-45 and a physical android device running 5.1
07-29 12:09:37.433 12043-473/com.pomochat V/RemoteRequest: com.couchbase.lite.replicator.RemoteRequest {PUT, http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50}: RemoteRequest called httpClient.execute, url: http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50
07-29 12:09:37.433 12043-473/com.pomochat W/RemoteRequest: com.couchbase.lite.replicator.RemoteRequest {PUT, http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50}: Got error status: 409 for http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50. Reason: Conflict
07-29 12:09:37.434 12043-473/com.pomochat D/RemoteRequest: com.couchbase.lite.replicator.RemoteRequestRetry$1@244e5a7e: RemoteRequestRetry inner request finished, url: http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50
07-29 12:09:37.434 12043-473/com.pomochat D/RemoteRequest: com.couchbase.lite.replicator.RemoteRequestRetry@226fa400: isTransientError, httpResponse: Response{protocol=http/1.1, code=409, message=Conflict, url=http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50} e: com.couchbase.lite.replicator.RemoteRequestResponseException: Conflict
07-29 12:09:37.434 12043-473/com.pomochat D/RemoteRequest: com.couchbase.lite.replicator.RemoteRequestRetry@226fa400: isTransientError, status code: 409
07-29 12:09:37.434 12043-473/com.pomochat D/RemoteRequest: com.couchbase.lite.replicator.RemoteRequestRetry@226fa400: isTransientError, return false
07-29 12:09:37.434 12043-473/com.pomochat D/RemoteRequest: com.couchbase.lite.replicator.RemoteRequestRetry$1@244e5a7e: RemoteRequestRetry failed, non-transient error.  NOT retrying. url: http://<IP_ADDRESS>:4986/sync_gateway/_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50
07-29 12:09:37.434 12043-473/com.pomochat D/Sync: com.couchbase.lite.replicator.ReplicationInternal$8@10631bdf: put remote _local document request finished.  checkpointID: c8c30368ebd6611c728f48aa11c31fe92ed94f50 body: {_rev=0-836, lastSequence=103535, _id=_local/c8c30368ebd6611c728f48aa11c31fe92ed94f50}
07-29 12:09:37.434 12043-473/com.pomochat I/Sync: com.couchbase.lite.replicator.ReplicationInternal$8@10631bdf: could not save remote checkpoint: 409 CONFLICT
07-29 12:09:37.434 12043-473/com.pomochat I/Sync: PullerInternal{unknown, pull, c8c30}: Refreshing remote checkpoint to get its _rev...

The local doc here is the replication checkpoint document. It has lastSequence info used to determine the last progress of the replication.

Still getting lots of these with build 1.3.0-45

Can you explain more about this? If general, you shouldn't see a lot unless maybe there are 2 replicator that has the exact same parameters running at the same time?

It could be 2 replicators I suppose, my code is supposed to guard against that but it could be a bug.  If there are 2 with the same parameters would that cause the 409 that I'm seeing?

@pasin Once this is resolved can you follow up with me on adding a regression / unit test?

@npomfret Can you post the full logcat (maybe in gist) to show all the 409 errors?

I was able to reproduce by submitting multiple POST _replicate to create pull replicators with the same properties. When multiple replicator objects with the same type and properties are created, they will try to save the remote checkpoint at the same time and end up with the conflict.
In general, CBL shouldn't allow multiple replicators of the same type to be created. This should be fixed.


[Feature request] Omit mapped type

First, thx a lot for the fantastic stuff 😄
Since ts 2.1, we have mapped types that are very usefull.
Pick is now included in the library, and allow to pick only some properties of a type T.
While Pick is usefull, it would be great to construct a type base on another type by omitting some properties, ie the opposite of Pick
Notably, it would allow to override some interfaces, eg :
interface Foo {
    name : string,
    age: number,
    id : string
}

// now we want the id as a number in a particular piece of code, along with the other properties
interface DifferentFoo extends Omit<Foo, "id"> {
   id: number
}

Great idea but also likely a duplicate of #12424

Hmm.. I didn't read very carefully #12424 (it's very dense...), but is this exactly the same request ?
#12424 seems to ask for a mapping  to selected kinds of types, while I ask for a conditionnal mapping based on property names.

I rather think this is the same as #12215 (omit word is even already mentionned)

closed in favor of #12215, my example doesn't add any significant value to it.


General support for auxiliary resources

This is a lot of text (after re-reading this it got a bit longer than expected 😅), but several things in this PR are not set in stone yet so the discussion is the core part. This PR is partially just to see how it could work.
Suggestion on how to handle auxiliary files in a more general way. Currently we only have acl files, but the option exists for more and at some point we at least want to add shape files. .meta files are currently handled differently but this could also change.
There are several design decisions here where there were multiple options which I'll go over below as we might want to change some. The main functions are mostly the same as those that were in AclManager. New ones are:

getRequiredPermissions -> Currently used because acl files require different permissions. Could also be removed by editing the authorizer (more on this below)
getType -> Returns the type of this auxiliary resource. Used for adding metadata needed for the link headers and could also be used for identifying what type of auxiliary resource we have if needed
validate -> used to check if an auxiliary resource is valid. Currently this just checks if the data can be converted (so if it's valid RDF), but this could be extended in the future with shape validation for example.

Some more notes about the interface:

All functions take a ResourceIdentifier as input. Reason for this is because otherwise it would be impossible to make the CompositeAuxiliaryManager which I think could be useful for when we have multiple types. Although this could be thinking too far ahead.
Wasn't really sure where to put everything, it's currently in ldp/auxiliary.
Removed some promises from the original AclManager functions as chances are low those would ever be relevant.

Besides that interface the acl authorizer has been updated. Before, the authorizer had a single if-statement in the beginning to check if the input was an acl file and to take the correct permissions on that. This has now been removed to make the authorizer more consistent. Instead, a new Authorizer has been added for auxiliary resources (and added in a waterfall handler). In case the input is an auxiliary resource the permissions will be changed (as mentioned above), and the request will be passed to the default authorizer with the URI of the associated resource instead. Instead of having getRequiredPermissions in the auxiliary manager interface, it would also be possible to instead have an exception for acl files in this class (either by having 2 manager, or using getType to check what kind of auxiliary resource it is). Later edit: probably should make a specific permissions extractor for acl files, would make more sense than all the other suggestions.
There are still some more things to be added but I already wanted to create this PR for discussion and in case there are problems.
To be added:

A new LockingResourceStore. The new one would extend the old one, but edit the calls so the identifier of the associated resource is used for locking when performing operations on auxiliary resources.
A new ResourceStore to handle auxiliary behaviour, including:

Validation checks on all incoming auxiliary data.
Deleting auxiliary resources when the main resource gets deleted. Although other solutions were also suggested in #53, I would like to keep everything auxiliary related out of the DataAccessorBasedStore if possible.
Add necessary metadata when getting the data (to create the link headers). Writing this just made me realize that the CompositeAuxiliaryHandler is not going to work as I wanted it to (since you need types for all auxiliary resources), so should probably scrap that one again.
Specifically for acl files we want to make sure they can't be deleted if they're in a root storage container (#381). Not sure how to best do this one, either as a specific check in this store or a separate store just for this. Or perhaps we event want a separate store for every auxiliary type instead of having 1 store that handles all types. We probably never are going to have so many auxiliary types that this would become problematic so I'm sort of a fan of this idea.
Potentially filter out the references to auxiliary resources when doing a GET request on containers. Currently this would still be a bit annoying though, depending on #384.

After last changes, now closes #53, closes #381, closes #385 and closes #573.

I've been following CSS' development, with a specific interest in how auxiliary resources would be supported.
Apologies in advance of any of these questions / thoughts are premature given the state of the PR...

It looks like if I wanted to add support for a new aux resource the following changes would be required:

Create an implementation of SuffixAuxiliaryManager to determine the suffix to use
Create an implementation of MetadataWriter to express the link header
Wire the above into the config JSON

Does that cover it or would other steps be missing?

It would be a welcome developer / configurer experience to be able to define "generic" auxiliary resources with only changes in the config JSON by specifying suffix and required permissions without the need to create new classes (unless extending functionality was required).  It appears that the SuffixAuxiliaryManager is very close to that (or perhaps accomplishes it now and I don't fully grasp the DI of component.js).

Thanks!
jc

I've been following CSS' development, with a specific interest in how auxiliary resources would be supported.
Apologies in advance of any of these questions / thoughts are premature given the state of the PR...

It looks like if I wanted to add support for a new aux resource the following changes would be required:

Create an implementation of SuffixAuxiliaryManager to determine the suffix to use
Create an implementation of MetadataWriter to express the link header
Wire the above into the config JSON

Does that cover it or would other steps be missing?

It would be a welcome developer / configurer experience to be able to define "generic" auxiliary resources with only changes in the config JSON by specifying suffix and required permissions without the need to create new classes (unless extending functionality was required).  It appears that the SuffixAuxiliaryManager is very close to that (or perhaps accomplishes it now and I don't fully grasp the DI of component.js).

Thanks!
jc

Apologies in advance of any of these questions / thoughts are premature given the state of the PR...

Like you see, this PR is not a finished product yet and more of a look into how it could be done. After pushing this I already had some different ideas about how to tackle some things here. So my answer here is going to be more of a thought experiment on "what could be" once this PR would be finished.

It looks like if I wanted to add support for a new aux resource the following changes would be required:

Create an implementation of SuffixAuxiliaryManager to determine the suffix to use
Create an implementation of MetadataWriter to express the link header
Wire the above into the config JSON

Does that cover it or would other steps be missing?

It depends on how similar the wanted behaviour is for your new type of aux resource compared to those that already exist. The main idea behind this PR is that the few aux resources that are defined in the spec (acl, shape, potentially meta) share several behaviours:

They have to be deleted when the main resource is deleted.
Permissions have to be checked on the main resource when accessing them.
They have to be exposed through a link header.
We want to not include them when showing the contents of a container.
Internally we want our locking system to lock the main resource when accessing them.
Their data has to be validated before being stored.
Potentially something I'm forgetting.
In case your aux resource wants different behaviour it would need a custom implementation, so let's assume that it does want this behaviour.

An implementation of AuxiliaryManager would be needed then. SuffixAuxiliaryManager is a helper class to cover aux files with even more similar behaviour: their URIs are made by adding a suffix (e.g., .acl) to the original URL, and they have to at least be valid RDF.
Writing a MetadataWriter would actually not be needed. Currently there's one in place for acl, but the idea would be to remove that one once this PR is finished. As mentioned in the "to be added" section above, the idea would then be to have a class that, for all aux types, handles adding the correct metadata. We already have a generic metadata writer in place that can convert this kind of metadata to a correct header. So the only thing that would be required there would be some extra configuration in the JSON.

It would be a welcome developer / configurer experience to be able to define "generic" auxiliary resources with only changes in the config JSON by specifying suffix and required permissions without the need to create new classes (unless extending functionality was required).  It appears that the SuffixAuxiliaryManager is very close to that (or perhaps accomplishes it now and I don't fully grasp the DI of component.js).

That is true actually. Currently it would not be possible due to being an abstract class, but it would not require that much change to be an actual class that can completely be configured. The main reason it's currently not like this is because the 2 main cases I considered are those from the spec (acl and shapes), and both of these would require custom validation anyway besides just the RDF check. But if there is a use case for supporting new aux types that only require RDF validation that is certainly something we could consider.

Apologies in advance of any of these questions / thoughts are premature given the state of the PR...

Like you see, this PR is not a finished product yet and more of a look into how it could be done. After pushing this I already had some different ideas about how to tackle some things here. So my answer here is going to be more of a thought experiment on "what could be" once this PR would be finished.

It looks like if I wanted to add support for a new aux resource the following changes would be required:

Create an implementation of SuffixAuxiliaryManager to determine the suffix to use
Create an implementation of MetadataWriter to express the link header
Wire the above into the config JSON

Does that cover it or would other steps be missing?

It depends on how similar the wanted behaviour is for your new type of aux resource compared to those that already exist. The main idea behind this PR is that the few aux resources that are defined in the spec (acl, shape, potentially meta) share several behaviours:

They have to be deleted when the main resource is deleted.
Permissions have to be checked on the main resource when accessing them.
They have to be exposed through a link header.
We want to not include them when showing the contents of a container.
Internally we want our locking system to lock the main resource when accessing them.
Their data has to be validated before being stored.
Potentially something I'm forgetting.
In case your aux resource wants different behaviour it would need a custom implementation, so let's assume that it does want this behaviour.

An implementation of AuxiliaryManager would be needed then. SuffixAuxiliaryManager is a helper class to cover aux files with even more similar behaviour: their URIs are made by adding a suffix (e.g., .acl) to the original URL, and they have to at least be valid RDF.
Writing a MetadataWriter would actually not be needed. Currently there's one in place for acl, but the idea would be to remove that one once this PR is finished. As mentioned in the "to be added" section above, the idea would then be to have a class that, for all aux types, handles adding the correct metadata. We already have a generic metadata writer in place that can convert this kind of metadata to a correct header. So the only thing that would be required there would be some extra configuration in the JSON.

It would be a welcome developer / configurer experience to be able to define "generic" auxiliary resources with only changes in the config JSON by specifying suffix and required permissions without the need to create new classes (unless extending functionality was required).  It appears that the SuffixAuxiliaryManager is very close to that (or perhaps accomplishes it now and I don't fully grasp the DI of component.js).

That is true actually. Currently it would not be possible due to being an abstract class, but it would not require that much change to be an actual class that can completely be configured. The main reason it's currently not like this is because the 2 main cases I considered are those from the spec (acl and shapes), and both of these would require custom validation anyway besides just the RDF check. But if there is a use case for supporting new aux types that only require RDF validation that is certainly something we could consider.

Thanks for the response -- I appreciate the detail.
In thinking more about it, I was likely over-simplifying the lifecycle of aux resources and agree that the case for purely configurable ones is probably more narrow than I had thought.
I could imagine a use case for purely "client-managed" aux resources that have the behavior you bulleted above.  For instance, in advance of server-side support for shape trees we are performing client-side validation and just requiring that a server be able to expose a given link header and store content associated with it.  That said, implementing this would be trivial given your proposal above.
Thanks again!

Thanks for the response -- I appreciate the detail.
In thinking more about it, I was likely over-simplifying the lifecycle of aux resources and agree that the case for purely configurable ones is probably more narrow than I had thought.
I could imagine a use case for purely "client-managed" aux resources that have the behavior you bulleted above.  For instance, in advance of server-side support for shape trees we are performing client-side validation and just requiring that a server be able to expose a given link header and store content associated with it.  That said, implementing this would be trivial given your proposal above.
Thanks again!

This PR has all the planned features now and closes 4 issues (added them in main message for auto-closure). Since it's quite big I'm going to link changes done to commits.
Changes since last version:

All resolved comments above
getType was replaced with addMetadata
SuffixAuxiliaryManager takes an optional link parameter to be used for adding metadata
getPermissions was removed, there now is an acl permissions extractor instead
There is a new function in the interface: canDeleteRoot (more on this one in "Things I don't like")
UrlBasedAclManager is now almost empty but we will need this in the future anyway for acl validation
CompositeAuxiliaryManager now has a function getAuxiliaryIdentifiers (also more on this in "Things I don't like")
Updated some RepresentationMetadata helper functions (needed for commit after that)
DataAccessorBasedStore now does the spec required auxiliary actions
AclLinkMetadataWriter was removed since it can now be simply configured

Changes to DataAccessorBasedStore
This was the main goal of this PR, as this causes us to support most of the spec requirements regarding auxiliary resources.
The following features were added to the store:

GET: add auxiliary-related metadata
GET: remove ldp:contains triples of auxiliary resources
POST: reject slugs that would create an auxiliary resource
PUT: validate the incoming data of auxiliary resources
PATCH: no change here of course, but because of the other changes PATCH requests will also get validated (#571)
DELETE: prevent deletion of acl files in root storage containers
DELETE: allow deletion of containers with only auxiliary resources
DELETE: also delete corresponding auxiliary resources when deleting a normal resource

I initially tried creating a separate store with this functionality, but supporting all of this was just too much of a hassle. Especially the DELETE additions would require so many more calls to the backend store to be supported correctly.
This does tie this logic into the DataAccessorBasedStore, but on the other hand, the DataAccessorBasedStore already was our central point of supporting Solid logic on resources: not allowing deletion of root storage containers, preventings POSTs to non-containers, not allowing identifiers with and without trailing slash, and many many more. In this way the advantage is that there still is only one place to look for most of the spec required behaviour regarding resources.
The main issue with this is if in the future someone wants to create a new store (not a new DataAccessor). That store would then have to replicate all of this behaviour. But this would already have been a problem anyway, this PR does not increase the complexity of that problem that much. Potentially this could be easily fixed by moving more parts of the behaviour to separate protected functions in the DataAccessorBasedStore so they can be reused. Another solution would be to completely rethink the architecture of this class so functionality can be abstracted to separate classes that can be plugged in? I would say to cross that bridge when we get there, although if we do want to take this situation into account perhaps we can make an issue around this and try to make a new backend ResourceStore and see what is missing to make that easy.
Things I don't like
As mentioned above, there are 2 things in this PR I'm not really happy with and am open to suggestions on how to change those parts.
One is the fact that that acl files in root storage containers can't be deleted. For this the AuxiliaryManager interface now has the function canDeleteRoot which returns a boolean. But the only point of this function is for this specific case so it feels a bit unfortunate to add it just for that. On the other hand I have no idea how to improve upon this. Other solutions could be to add a separate store that supports just this behaviour, or have the DataAccessorBasedStore take 2 separate auxiliary managers as input, but both of those feel way worse
The other one is the getAuxiliaryIdentifiers function in the composite auxiliary manager. This is needed so we can know all auxiliary resources related to the main resource, so we can delete them together with the main resource. But this now causes the composite manager to expose a function not in the interface, so the DataAccessorBasedStore is required to take that specific type of manager as input parameter instead of a general auxiliary manager. Some other solutions (for each of which a case can be made imo):

Delete the CompositeAuxiliaryManager and have the store take an array of auxiliary managers instead. The disadvantage of this is that we would then need helper functions for all the things the composite manager does. There are more cases where we need to handle all auxiliary types separately so would need several new methods to iterate over them (either in the store or a separate AuxiliaryUtil file)
Add the getAuxiliaryIdentifiers function to the AuxiliaryManager. This might be the cleanest solution but on the other hand for single auxiliary managers it would be silly to have this function.

In comparison to the rest of the PR these are 2 minor things but they're the main ugly things still in there so I would be happy to have a cleaner solution there.

@joachimvh As a point of validation for the changes in this PR -- I was able to fairly trivially implement support for exposing and maintaining an additional aux. resource -- https://github.com/janeirodigital/community-server/commit/961f99f6fc43a598307f07741d18deb9ccd05290

(Replying to the main comment before going through the individual comments)
It's the main problem of how much modularization we want vs how complicated it would become to configure everything. Will look into doing it like this since I don't see any major problems with this at first.

However, those 3 functions are independent—yet they are currently tied into a manager.

Don't completely agree since the identifier management is probably always going to be necessary for adding the metadata. They can still be separated though but the metadata would need to be injected with the identifier management. Or the IdentifierStrategy could be a required parameter for the handle method of the metadata generator. Potentially also for the validator once we do more than simple RDF checking there.

In the last two cases, I wonder if we even need to pass identifier, or whether metadata covers that.

Yea I also doubted there. I kept identifier to be in line with the other functions but they could probably be removed.

We could also make the canDeleteRoot method part of this. However, I propose to simply drop it. I conjecture it will always be false.

There are currently 2 examples of auxiliary resources in the spec: acl files and description resources. We currently obfuscate the second one by internally storing it as metadata, but that is an example of an auxiliary resouce needing this value to be true.

Partially related: we already have something called an IdentifierStrategy, which mostly covers relative container behaviour: https://github.com/solid/community-server/blob/main/src/util/identifiers/IdentifierStrategy.ts
So this here we would need something like AuxiliaryIdentifierStrategy.

Version 3!
Although there are some comments on the previous version that could change things, this should already mostly match the new suggestion.
Although a lot is re-written, functionality wise not much changed. The changes to the DataAccessorBasedStore are pretty much the same for example. The main changes are the auxiliary related interfaces which have completely changed, and the corresponding configs.
An overview (main points are interfaces, sub points are implementations):

AuxiliaryIdentifierStrategy has all the identifier related functions. Now with getAuxiliaryIdentifiers although it still sort of feels weird there. Also the name is very long.

SuffixAuxiliaryIdentifierStrategy generates identifiers based on a suffix
RoutingAuxiliaryIdentifierStrategy combines multiple strategies into one.

MetadataGenerator takes as input a RepresentationMetadata and adds to it somehow

LinkMetadataGenerator adds links to auxiliary resources based on a given link predicate

Validator takes a Representation as input and validates it somehow. There's something to be said for calling it a RepresentationValidator.

RdfValidator validates a representation by checking if the data stream contains valid RDF in any format supported by the given converter

AuxiliaryStrategy extends AuxiliaryIdentifierStrategy and adds canDeleteRoot, addMetadata and validate functions

CompositeAuxiliaryStrategy takes as input an AuxiliaryIdentifierStrategy, a MetadataGenerator, a Validator and a boolean (for canDeleteRoot)
RoutingAuxiliaryStrategy extends RoutingAuxiliaryIdentifierStrategy and adds support for the 3 other functions

An example of how the acl strategy is now configured:
    {
      "@id": "urn:solid-server:default:AclIdentifierStrategy",
      "@type": "SuffixAuxiliaryIdentifierStrategy",
      "SuffixAuxiliaryIdentifierStrategy:_suffix": ".acl"
    },
    {
      "@id": "urn:solid-server:default:AclStrategy",
      "@type": "CompositeAuxiliaryStrategy",
      "CompositeAuxiliaryStrategy:_identifierStrategy": {
        "@id": "urn:solid-server:default:AclIdentifierStrategy"
      },
      "CompositeAuxiliaryStrategy:_metadataGenerator": {
        "@type": "LinkMetadataGenerator",
        "LinkMetadataGenerator:_link": "http://www.w3.org/ns/auth/acl#accessControl",
        "LinkMetadataGenerator:_identifierStrategy": {
          "@id": "urn:solid-server:default:AclIdentifierStrategy"
        }
      },
      "CompositeAuxiliaryStrategy:_validator": {
        "@id": "urn:solid-server:default:RdfValidator"
      },
      "CompositeAuxiliaryStrategy:_canDeleteRoot": false
    }

So some duplication on the AclIdentifierStrategy part. This entire block is what would be needed for a new auxiliary resource.
For all classes that need to support all auxiliary resources there's also this:
    {
      "@id": "urn:solid-server:default:AuxiliaryStrategy",
      "@type": "RoutingAuxiliaryStrategy",
      "RoutingAuxiliaryStrategy:_sources": [
        {
          "@id": "urn:solid-server:default:AclStrategy"
        }
      ]
    },

So new strategies would them simply have to be added to this list to be supported by all relevant classes. Some classes only require the IdentifierStrategy parts, but the full strategy extends that interface so no need to have both.


Articles plagiarism check implementation

Closes #424
Hi, I am starting this as draft request for now, because I still need to test the GitHub workflow script properly. I've never worked with one before, so it's ruff. The one I have now is work in progress.
However, the plagiarism-checker service is ready and working. Since Evgeny gave me a hint that this problem has a better solution than just using a paid third-party API, I started researching on how I might implement it otherwise. One old open-source library drew my attention, as it was using google search API to check text for plagiarism in the open web. I found that method better for given problem, but I didn't want to use a library that hasn't been updated for 10+ years, so I developed a little service that uses the same technic.
Additional costs with this method should be 0, since Google lets you make up to 100 queries a day for free. My service is implemented in a way, that it checks every sentence for a 100% match on the internet, while Crypto Attack Wiki article has less than 30 sentences on the average (Rough estimate). And since new articles are released not that often, we can have 2-3 free checks for a new article in a single day.

I finished and tested the whole thing. This is the end results for different text inputs:

A little more on the implementation:

GitHub Actions workflow finds the first .md file in the PR and sends it to a Cloudflare worker. Then it formats the result to  a proper markdown for a GitHub PR comment. Lastly, it posts the results comment. There is one little hack I used here - for line breaks I literally pressed "Enter" in the .yml file, because neither \n or < b r > did the job. (\n didn't do anything at all, and < b r >  was creating a new line visually, but was still treating the whole comment as a single line, so for example if I had triple hash for my first line, everything in the comment got treated like a header)

Cloudflare worker checks the text one sentence at a time (Anything more than 10 characters and ending with a dot is considered a sentence) Now, this is not a super advanced way for checking plagiarism, but since Evgeny pointed out that we are looking for the simple copy-pasting of text from the open web - it does the job.

I am gonna work on a README later with instructions on setting up the service and adding all necessary secrets
Looking forward to hear some feedback on my implementation!

@Lavriz review this please, whenever you are available

Hi, @Lavriz
I resolved all the requested changes and added instructions on how to integrate the service and set up corresponding secrets.
Hope to hear back from you soon

Moved formatting logic to javascript, fixed some formatting bugs along the way. The plagiarism result comments are much prettier and consistent now.
The service is called by /plagiarismcheck command
Added permission check, so only users in WIKI_REVIEWERS can call the command


Differentiate between failure and error in JUnit output

JUnit supports to differentiate between failures (failed assertion) and errors (something unintended like pending RTE) in its output. Right now everything is outputted as a failure.

Changing that has the potential to break our downstream consumers like gitlab/bamboo/junit2html.

So, there is a need to check this first.


Error: Unable to perform Loop Out

When in Lightning-Terminal, performing loop out with automatic channel selection with any amount of sats gives the following error:
Unable to perform Loop Out
2: cannot initiate swap: rpc error: code = OutOfRange desc = amount above current maximum

What is the current maximum per the error? Thank you.

Hey @beeforbacon this is actually a temporary error caused by the backend loop server. It'll usually be resolved if you try again a little later. Can you check now to see if it'll work?

Hey @beeforbacon this is actually a temporary error caused by the backend loop server. It'll usually be resolved if you try again a little later. Can you check now to see if it'll work?

Just tried with as low as 3 mil sats. same error, unfortunately.

Are you still facing this issue? If so, can you provide a snippet of your lnd.log file when the swap is initiated until the error is produced?

This was a temporary error on server side, which should have been resolved now.
Did you come right @beeforbacon ?

@beeforbacon I am going to close this issue out for now. Please let us know if you continue to face the problem.


emit in batches of 1000

@pauldix is this what you were thinking?

yep, that's exactly it.

This change still doesn't still me why we batch. @pauldix identified a reason, a good one I'm sure, but this code doesn't tell me what it is. It would be really helpful to the next person when reviewing this code, to understand why our system works like this.

For example "unbounded emission of data can cause the system to run out of RAM", or whatever the reason is.


ServerOnlyStreamInterface::sendAndClose does not raise exceptions

I'm trying to establish a stream connection to a remote and deal with connection issues.
My code to establish the response channel currently looks like this:
val receiveData = sequencerClient.receiveData() // it's a ServerOnlyStreamInterface
val receiveDataRequest = receiveDataWithPreloadSelector(preloadSelector) // just the request input
receiveData.sendAndClose(receiveDataRequest) // always succeeds, even if the remote is not available
receiveData.responseChannel()

if the remote service is not available, I would have expected the invocation of sendAndClose to raise an error. However, it looks like sendAndClose doesn't actually send anything. Only when invoking receiveCatching on the response channel do I get an exception that the remote is not available.
However, I really want to have different error handling behaviour for establishing the initial connection and dealing with subsequent issues: if it cannot establish the connection, it's not so bad - but if something breaks while streaming data of an existing connection, it needs to handle it more urgently.
Of course I can introduce a new state variable that indicates whether something was already read etc. But I find it quite irritating that a method called sendAndClose doesn't raise an exception when it cannot send anything.

@milgner, I suspect you are running into a sharp edge of the API. If I am correct, the problem is that the sendAndClose method currently returns a Result<Unit>. This intentionally never throws an exception as the Result type transforms exceptions into values.
So when you say it always succeeds, do you mean that it never throws an exception? Or is your real code actually examining the result value to see if it was successful? Unfortunately, you must do the latter: you must not ignore the return value (as in your example snippet above) but actually interrogate it.
This is something we will fix in the API before this repo reaches v1.0: to get rid of Result<Unit> from the API entirely and use exceptions instead. The Result type is really only valuable for functions that return an actual value that the caller wants to examine. So the net effect of using Result<Unit> is that failures are quiet and too easy to miss.

So when you say it always succeeds, do you mean that it never throws an exception? Or is your real code actually examining the result value to see if it was successful? Unfortunately, you must do the latter: you must not ignore the return value (as in your example snippet above) but actually interrogate it.

Oh my... I somehow totally overlooked the fact that a Result is being returned here :see_no_evil:

This is something we will fix in the API before this repo reaches v1.0: to get rid of Result<Unit> from the API entirely and use exceptions instead. The Result type is really only valuable for functions that return an actual value that the caller wants to examine. So the net effect of using Result<Unit> is that failures are quiet and too easy to miss.

In principle I'm a big fan of using Result and Option types and using map et al to transform them. But since other methods used to throw exceptions, I wasn't looking for a Result type at all... I'm just gonna change the code accordingly!

In principle I'm a big fan of using Result and Option types and using map et al to transform them. But since other methods used to throw exceptions, I wasn't looking for a Result type at all...

That's fair: API consistency/coherence is something we will address as well.
FWIW, I do like the use of functional types like Result and Option, but they don't really make as much sense to combine with Unit: since that is really the absence of a value, many users won't think to use the functional/monadic methods like map, etc. Also, I think block-based APIs are better for managing the lifetime of resources (and that is the direction we plan to take the stream-related methods), and they lend themselves to exception-based control flow.


v2.x.x branch inconsistent

v2.x.x is inconsistent with our other repos that use v2.x. It may make sense to change it.
Semantically v2.x implies both minor and patch differences where v2.x.x implies a minor and patch version that match eachother :P

Done :+1:


Open repo folder in integrated terminal

Does this issue occur when all extensions are disabled?: Yes

VS Code Version: 1.78.2
OS Version: MacOS 12.6.5

Steps to Reproduce:

Open context menu on git repo
Click command "Open in Terminal"

Before was:
A new integrated terminal will open with the current directory of the git repo directory
Now is:
A new default os shell Terminal (not the integrated terminal) will open

Thanks for creating this issue! It looks like you may be using an old version of VS Code, the latest stable release is 1.79.2. Please try upgrading to the latest version and checking whether this issue remains.
Happy Coding!

The update returned as it was before


Update request: ouch 0.3.1 → 0.4.1 (backport from unstable)

Package name: ouch
Latest released version: 0.4.1
Current version on the unstable channel: 0.4.1
Current version on the stable/release channel: 0.3.1
[x] Checked the nixpkgs pull requests

It was about 2 year from latest backport
Notify maintainers
@figsoda @psibi

Note for maintainers: Please tag this issue in your PR.

ouch 0.4.1 uses feature from rust 1.65, which isn't available in Nixpkgs/NixOS 22.11. Compiling ouch 0.4.1 fails with this error:
 error[E0658]: `let...else` statements are unstable
    --> src/extension.rs:147:5
     |
 147 | /     let Some(mut name) = path.file_name().and_then(<[u8] as ByteSlice>::from_os_str) else {
 148 | |         return (path, extensions);
 149 | |     };
     | |______^
     |
     = note: see issue #87335 <https://github.com/rust-lang/rust/issues/87335> for more information

NixOS 23.05 will release in a little over a month, which will get ouch 0.4.1, hopefully that would help. You can track the schedule in https://github.com/NixOS/nixpkgs/issues/223562

Thanks for your response! I will wait next release then


Fixes #1818 - Make Marathon fail on startup errors

Make Marathon fail and exit if any of the services can't be started, e.g., if
another process is already bound to the the HTTP port.

We agreed to move this to Chaos...


MongoDB ID None allow and pre made embeddings allow

Why are these changes needed?
These changes allow for users to use the MongoDBAtlas class with more modifiability. This includes enabling users to pass in embeddings, without need to create in the class (note this functionality can be extended to other VectorDB), and make use of MongoDB auto ID assignment, removing the need to insert ID at upload.
Related issue number
Closes #4728
Checks

[x] I've included any doc changes needed for https://microsoft.github.io/autogen/. See https://microsoft.github.io/autogen/docs/Contribute#documentation to build and test documentation locally.
[x] I've added tests (if relevant) corresponding to the changes introduced in this PR.
[x] I've made sure all auto checks have passed.

@mattbeardey please read the following Contributor License Agreement(CLA). If you agree with the CLA, please reply with the following information.
@microsoft-github-policy-service agree [company="{your company}"]

Options:

(default - no company specified) I have sole ownership of intellectual property rights to my Submissions and I am not making Submissions in the course of work for my employer.

@microsoft-github-policy-service agree

(when company given) I am making Submissions in the course of work for my employer (or my employer has intellectual property rights in my Submissions by contract or applicable law). I have permission from my employer to make Submissions and enter into this Agreement on behalf of my employer. By signing below, the defined term “You” includes me and my employer.

@microsoft-github-policy-service agree company="Microsoft"

Contributor License Agreement
Contribution License Agreement
This Contribution License Agreement (“Agreement”) is agreed to by the party signing below (“You”), and conveys certain license rights to Microsoft Corporation and its affiliates (“Microsoft”) for Your contributions to Microsoft open source projects. This Agreement is effective as of the latest signature date below.

Definitions.
“Code” means the computer software code, whether in human-readable or machine-executable form,
that is delivered by You to Microsoft under this Agreement.
“Project” means any of the projects owned or managed by Microsoft and offered under a license
approved by the Open Source Initiative (www.opensource.org).
“Submit” is the act of uploading, submitting, transmitting, or distributing code or other content to any
Project, including but not limited to communication on electronic mailing lists, source code control
systems, and issue tracking systems that are managed by, or on behalf of, the Project for the purpose of
discussing and improving that Project, but excluding communication that is conspicuously marked or
otherwise designated in writing by You as “Not a Submission.”
“Submission” means the Code and any other copyrightable material Submitted by You, including any
associated comments and documentation.
Your Submission. You must agree to the terms of this Agreement before making a Submission to any
Project. This Agreement covers any and all Submissions that You, now or in the future (except as
described in Section 4 below), Submit to any Project.
Originality of Work. You represent that each of Your Submissions is entirely Your original work.
Should You wish to Submit materials that are not Your original work, You may Submit them separately
to the Project if You (a) retain all copyright and license information that was in the materials as You
received them, (b) in the description accompanying Your Submission, include the phrase “Submission
containing materials of a third party:” followed by the names of the third party and any licenses or other
restrictions of which You are aware, and (c) follow any other instructions in the Project’s written
guidelines concerning Submissions.
Your Employer. References to “employer” in this Agreement include Your employer or anyone else
for whom You are acting in making Your Submission, e.g. as a contractor, vendor, or agent. If Your
Submission is made in the course of Your work for an employer or Your employer has intellectual
property rights in Your Submission by contract or applicable law, You must secure permission from Your
employer to make the Submission before signing this Agreement. In that case, the term “You” in this
Agreement will refer to You and the employer collectively. If You change employers in the future and
desire to Submit additional Submissions for the new employer, then You agree to sign a new Agreement
and secure permission from the new employer before Submitting those Submissions.
Licenses.

Copyright License. You grant Microsoft, and those who receive the Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license in the
Submission to reproduce, prepare derivative works of, publicly display, publicly perform, and distribute
the Submission and such derivative works, and to sublicense any or all of the foregoing rights to third
parties.
Patent License. You grant Microsoft, and those who receive the Submission directly or
indirectly from Microsoft, a perpetual, worldwide, non-exclusive, royalty-free, irrevocable license under
Your patent claims that are necessarily infringed by the Submission or the combination of the
Submission with the Project to which it was Submitted to make, have made, use, offer to sell, sell and
import or otherwise dispose of the Submission alone or with the Project.
Other Rights Reserved. Each party reserves all rights not expressly granted in this Agreement.
No additional licenses or rights whatsoever (including, without limitation, any implied licenses) are
granted by implication, exhaustion, estoppel or otherwise.

Representations and Warranties. You represent that You are legally entitled to grant the above
licenses. You represent that each of Your Submissions is entirely Your original work (except as You may
have disclosed under Section 3). You represent that You have secured permission from Your employer to
make the Submission in cases where Your Submission is made in the course of Your work for Your
employer or Your employer has intellectual property rights in Your Submission by contract or applicable
law. If You are signing this Agreement on behalf of Your employer, You represent and warrant that You
have the necessary authority to bind the listed employer to the obligations contained in this Agreement.
You are not expected to provide support for Your Submission, unless You choose to do so. UNLESS
REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, AND EXCEPT FOR THE WARRANTIES
EXPRESSLY STATED IN SECTIONS 3, 4, AND 6, THE SUBMISSION PROVIDED UNDER THIS AGREEMENT IS
PROVIDED WITHOUT WARRANTY OF ANY KIND, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTY OF
NONINFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
Notice to Microsoft. You agree to notify Microsoft in writing of any facts or circumstances of which
You later become aware that would make Your representations in this Agreement inaccurate in any
respect.
Information about Submissions. You agree that contributions to Projects and information about
contributions may be maintained indefinitely and disclosed publicly, including Your name and other
information that You submit with Your Submission.
Governing Law/Jurisdiction. This Agreement is governed by the laws of the State of Washington, and
the parties consent to exclusive jurisdiction and venue in the federal courts sitting in King County,
Washington, unless no federal subject matter jurisdiction exists, in which case the parties consent to
exclusive jurisdiction and venue in the Superior Court of King County, Washington. The parties waive all
defenses of lack of personal jurisdiction and forum non-conveniens.
Entire Agreement/Assignment. This Agreement is the entire agreement between the parties, and
supersedes any and all prior agreements, understandings or communications, written or oral, between
the parties relating to the subject matter hereof. This Agreement may be assigned by Microsoft.

@microsoft-github-policy-service agree

@microsoft-github-policy-service agree

Codecov Report
Attention: Patch coverage is 0% with 39 lines in your changes missing coverage. Please review.

Project coverage is 28.86%. Comparing base (8a8fcd8) to head (26d2711).
Report is 10 commits behind head on 0.2.

Files with missing lines
Patch %
Lines

autogen/agentchat/contrib/vectordb/mongodb.py
0.00%
39 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##              0.2    #4746      +/-   ##
==========================================
- Coverage   29.30%   28.86%   -0.44%
==========================================
  Files         117      117
  Lines       13013    13049      +36
  Branches     2469     2474       +5
==========================================
- Hits         3813     3767      -46
- Misses       8854     8935      +81
- Partials      346      347       +1

Flag
Coverage Δ

unittests
28.86% <0.00%> (-0.44%)
:arrow_down:

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

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

Can you add or update the tests? https://github.com/microsoft/autogen/blob/f9295c4c39faf8bd3c1cef13f7ff235b2e081239/test/agentchat/contrib/vectordb/test_mongodb.py

Tests have been ammended.

Hi @thinkall , thoughts on fbfc164, where the ID Hashing is implemented in the base.py class, and inherited throughout, with qdrant.py implementing its own class, as per your provided code. Thanks

Hi @thinkall , @ekzhu
Scaled back the PR to focus on ID only, will look to embeddings as a separate topic, as I believe there may be a need for definition on what a "Embedding Function" is, and what it returns (i.e. errors with the "to_list" method not guaranteed to be present. Will handle separately.
Please find latest pull. Thanks. Please review when possible.

@ekzhu , do we still support openai tests for 0.2 in the CI pipeline?

Yes. It is still running.

It's still supported but the branch must be on the Microsoft repo.


(RE-8152) Use internal mirrors when building

Prior to this commit, we had been setting all mocks to install from
publicly available and externally maintained mirrors. This is fine,
and it is requires as this module is publicly available. However, this
does sometimes prove to be a pain point sometimes. It is not best
practice to rely on external mirrors always being up and available. This
commit updates this module to allow a user to pass in a variable
$pl_internal. This is only meant to be used inside the Puppet, Inc. VPN.
This will set the baseurl for the system repos to be set to the mirror
that we maintain internally. This will help insulate us from future
changes such as platform EOL status.

Yeah... we should make it more flexible like that. I was just being lazy... I'll update it now

Alright, I successfully built puppet on el5 with the mocks generated by this commit

:+1: :shipit:


Fixed external regexp issue for empty external arrays

This shouldn't affect you, but it's always better to be future-proof.

Codecov Report

Merging #30 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master      #30   +/-   ##
=======================================
  Coverage   94.62%   94.62%
=======================================
  Files           9        9
  Lines          93       93
  Branches       29       29
=======================================
  Hits           88       88
  Misses          5        5

Continue to review full report at Codecov.

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

Thank you, @Andarist. 😃