":verbose" gives wrong location for 'makeprg' option set by ":compiler"

Steps to reproduce
Run this shell command:
vim -Nu NONE -S <(cat <<'EOF'
    vim9script
    ['compiler shellcheck']->writefile('/tmp/t.vim')
    silent edit /tmp/t.vim
    source %
    verbose set makeprg?
EOF
)

The output is:
makeprg=shellcheck -f gcc
      Last set from /tmp/t.vim line 18

That's wrong.  There is no line 18 in /tmp/t.vim; the latter only contains 1 line.
Expected behavior
Not sure.  Either the output should be this:
makeprg=shellcheck -f gcc
      Last set from /usr/local/share/vim/vim82/compiler/shellcheck.vim line 18

Or this:
makeprg=shellcheck -f gcc
      Last set from /tmp/t.vim line 1

I think the latter would be more useful.
Operating system
Ubuntu 20.04.3 LTS
Version of Vim
8.2 Included patches: 1-3575

Probably fixed in patch 8.2.3584.


elastisearch 8.1.0 - helm error

Chart version:
7.17.1
Kubernetes version:
v1.20
Kubernetes provider: E.g. GKE (Google Kubernetes Engine)
Alicloud
Helm Version:
v3.7.2
helm get release output
e.g. helm get elasticsearch (replace elasticsearch with the name of your helm release)
Be careful to obfuscate every secrets (credentials, token, public IP, ...) that could be visible in the output before copy-pasting.
If you find some secrets in plain text in helm get release output you should use Kubernetes Secrets to managed them is a secure way (see Security Example).

Output of helm get release
manjur@MacBook-Pro elasticsearch % helm install elasticsearch elastic/elasticsearch -f values.yaml
Error: INSTALLATION FAILED: template: elasticsearch/templates/statefulset.yaml:303:27: executing "elasticsearch/templates/statefulset.yaml" at <.Values.roles.master>: can't evaluate field master in type interface {}

Describe the bug:
Steps to reproduce:

helm install elasticsearch elastic/elasticsearch -f values.yaml

Expected behavior:
Provide logs and/or server output (if relevant):
Be careful to obfuscate every secrets (credentials, token, public IP, ...) that could be visible in the output before copy-pasting
manjur@MacBook-Pro elasticsearch % helm install elasticsearch elastic/elasticsearch -f values.yaml
Error: INSTALLATION FAILED: template: elasticsearch/templates/statefulset.yaml:303:27: executing "elasticsearch/templates/statefulset.yaml" at <.Values.roles.master>: can't evaluate field master in type interface {}

Any additional context:

Please can you double check the vaues.yaml content?

my values.yml
`---
clusterName: "elasticsearch"
nodeGroup: "master"
The service that non master groups will try to connect to when joining the cluster
This should be set to clusterName + "-" + nodeGroup for your master group
masterService: ""
Elasticsearch roles that will be applied to this nodeGroup
These will be set as environment variables. E.g. node.roles=master
https://www.elastic.co/guide/en/elasticsearch/reference/current/modules-node.html#node-roles
roles:

master
data
data_content
data_hot
data_warm
data_cold
ingest
ml
remote_cluster_client
transform

replicas: 3
minimumMasterNodes: 2
esMajorVersion: ""
Allows you to add any config files in /usr/share/elasticsearch/config/
such as elasticsearch.yml and log4j2.properties
esConfig: {}
elasticsearch.yml: |
key:
nestedkey: value
log4j2.properties: |
key = value
createCert: true
esJvmOptions: {}
processors.options: |
-XX:ActiveProcessorCount=3
Extra environment variables to append to this nodeGroup
This will be appended to the current 'env:' key. You can use any of the kubernetes env
syntax here
extraEnvs: []
- name: MY_ENVIRONMENT_VAR
value: the_value_goes_here
Allows you to load environment variables from kubernetes secret or config map
envFrom: []
- secretRef:
name: env-secret
- configMapRef:
name: config-map
Disable it to use your own elastic-credential Secret.
secret:
enabled: true
password: "" # generated randomly if not defined
A list of secrets and their paths to mount inside the pod
This is useful for mounting certificates for security and for mounting
the X-Pack license
secretMounts: []
- name: elastic-certificates
secretName: elastic-certificates
path: /usr/share/elasticsearch/config/certs
defaultMode: 0755
hostAliases: []
#- ip: "<IP_ADDRESS>"
hostnames:
- "foo.local"
- "bar.local"
image: "docker.elastic.co/elasticsearch/elasticsearch"
imageTag: "8.1.0"
imagePullPolicy: "IfNotPresent"
podAnnotations: {}
iam.amazonaws.com/role: es-cluster
additionals labels
labels: {}
esJavaOpts: "" # example: "-Xmx1g -Xms1g"
resources:
requests:
cpu: "1000m"
memory: "2Gi"
limits:
cpu: "1000m"
memory: "2Gi"
initResources: {}
limits:
cpu: "25m"
# memory: "128Mi"
requests:
cpu: "25m"
memory: "128Mi"
networkHost: "<IP_ADDRESS>"
volumeClaimTemplate:
accessModes: ["ReadWriteOnce"]
storageClassName: oss
resources:
requests:
storage: 30Gi
rbac:
create: false
serviceAccountAnnotations: {}
serviceAccountName: ""
automountToken: true
podSecurityPolicy:
create: false
name: ""
spec:
privileged: true
fsGroup:
rule: RunAsAny
runAsUser:
rule: RunAsAny
seLinux:
rule: RunAsAny
supplementalGroups:
rule: RunAsAny
volumes:
- secret
- configMap
- persistentVolumeClaim
- emptyDir
persistence:
enabled: true
labels:
# Add default labels for the volumeClaimTemplate of the StatefulSet
enabled: false
annotations: {}
extraVolumes: []
- name: extras
emptyDir: {}
extraVolumeMounts: []
- name: extras
mountPath: /usr/share/extras
readOnly: true
extraContainers: []
- name: do-something
image: busybox
command: ['do', 'something']
extraInitContainers: []
- name: do-something
image: busybox
command: ['do', 'something']
This is the PriorityClass settings as defined in
https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/#priorityclass
priorityClassName: ""
By default this will make sure two pods don't end up on the same node
Changing this to a region would allow you to spread pods across regions
antiAffinityTopologyKey: "kubernetes.io/hostname"
Hard means that by default pods will only be scheduled if there are enough nodes for them
and that they will never end up on the same node. Setting this to soft will do this "best effort"
antiAffinity: "hard"
This is the node affinity settings as defined in
https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity-beta-feature
nodeAffinity: {}
The default is to deploy all pods serially. By setting this to parallel all pods are started at
the same time when bootstrapping the cluster
podManagementPolicy: "Parallel"
The environment variables injected by service links are not used, but can lead to slow Elasticsearch boot times when
there are many services in the current namespace.
If you experience slow pod startups you probably want to set this to false.
enableServiceLinks: true
protocol: https
httpPort: 9200
transportPort: 9300
service:
enabled: true
labels: {}
labelsHeadless: {}
type: ClusterIP
Consider that all endpoints are considered "ready" even if the Pods themselves are not
https://kubernetes.io/docs/reference/kubernetes-api/service-resources/service-v1/#ServiceSpec
publishNotReadyAddresses: false
nodePort: ""
annotations: {}
httpPortName: http
transportPortName: transport
loadBalancerIP: ""
loadBalancerSourceRanges: []
externalTrafficPolicy: ""
updateStrategy: RollingUpdate
This is the max unavailable setting for the pod disruption budget
The default value of 1 will make sure that kubernetes won't allow more than 1
of your pods to be unavailable during maintenance
maxUnavailable: 1
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
securityContext:
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
runAsNonRoot: true
runAsUser: 1000
How long to wait for elasticsearch to stop gracefully
terminationGracePeriod: 120
sysctlVmMaxMapCount: 262144
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 3
timeoutSeconds: 5
https://www.elastic.co/guide/en/elasticsearch/reference/current/cluster-health.html#request-params wait_for_status
clusterHealthCheckParams: "wait_for_status=green&timeout=1s"
Use an alternate scheduler.
ref: https://kubernetes.io/docs/tasks/administer-cluster/configure-multiple-schedulers/

schedulerName: ""
imagePullSecrets: []
nodeSelector: {}
tolerations: []
Enabling this will publicly expose your Elasticsearch instance.
Only enable this if you have security enabled on your cluster
ingress:
enabled: false
annotations: {}
kubernetes.io/ingress.class: nginx
kubernetes.io/tls-acme: "true"
className: "nginx"
pathtype: ImplementationSpecific
hosts:
- host: elasticsearch.cb8037461f29f418d883b9702b8792c6e.ap-southeast-3.alicontainer.com
paths:
- path: /
tls: []
- secretName: chart-example-tls
hosts:
- chart-example.local
nameOverride: ""
fullnameOverride: ""
healthNameOverride: ""
lifecycle: {}
preStop:
exec:
command: ["/bin/sh", "-c", "echo Hello from the postStart handler > /usr/share/message"]
postStart:
exec:
command:
- bash
- -c
- |
#!/bin/bash
# Add a template to adjust number of shards/replicas
TEMPLATE_NAME=my_template
INDEX_PATTERN="logstash-*"
SHARD_COUNT=8
REPLICA_COUNT=1
ES_URL=http://localhost:9200
while [[ "$(curl -s -o /dev/null -w '%{http_code}\n' $ES_URL)" != "200" ]]; do sleep 1; done
curl -XPUT "$ES_URL/_template/$TEMPLATE_NAME" -H 'Content-Type: application/json' -d'{"index_patterns":['""$INDEX_PATTERN""'],"settings":{"number_of_shards":'$SHARD_COUNT',"number_of_replicas":'$REPLICA_COUNT'}}'
sysctlInitContainer:
enabled: true
keystore: []
networkPolicy:
Enable creation of NetworkPolicy resources. Only Ingress traffic is filtered for now.
In order for a Pod to access Elasticsearch, it needs to have the following label:
{{ template "uname" . }}-client: "true"
Example for default configuration to access HTTP port:
elasticsearch-master-http-client: "true"
Example for default configuration to access transport port:
elasticsearch-master-transport-client: "true"
http:
enabled: false
## if explicitNamespacesSelector is not set or set to {}, only client Pods being in the networkPolicy's namespace
## and matching all criteria can reach the DB.
## But sometimes, we want the Pods to be accessible to clients from other namespaces, in this case, we can use this
## parameter to select these namespaces
##
# explicitNamespacesSelector:
#   # Accept from namespaces with all those different rules (only from whitelisted Pods)
#   matchLabels:
#     role: frontend
#   matchExpressions:
#     - {key: role, operator: In, values: [frontend]}
## Additional NetworkPolicy Ingress "from" rules to set. Note that all rules are OR-ed.
##
# additionalRules:
#   - podSelector:
#       matchLabels:
#         role: frontend
#   - podSelector:
#       matchExpressions:
#         - key: role
#           operator: In
#           values:
#             - frontend

transport:
## Note that all Elasticsearch Pods can talk to themselves using transport port even if enabled.
enabled: false
# explicitNamespacesSelector:
#   matchLabels:
#     role: frontend
#   matchExpressions:
#     - {key: role, operator: In, values: [frontend]}
# additionalRules:
#   - podSelector:
#       matchLabels:
#         role: frontend
#   - podSelector:
#       matchExpressions:
#         - key: role
#           operator: In
#           values:
#             - frontend
tests:
enabled: true
Deprecated
please use the above podSecurityContext.fsGroup instead
fsGroup: ""
`

please help i am not much familliar with elasticsearch to host into kubernetes.

Please use stackoverflow to ask help, github issue is for bugs or feature requests.
You are using Helm chart elasticsearch, version 7.17.1, values.yaml "syntax" is here : https://github.com/elastic/helm-charts/blob/v7.17.1/elasticsearch/values.yaml#L11
Dont use values.yaml from master branch!

values-yaml.log
@ebuildy  still the same,

hello, helm-chart version 8 it's not ready yet. we are working on it (no ETA) and for now the last helm-chart available is 7.17.1 as you can see here

Having another version of the Helm chart in the repository and in the GIT master is very confusing. Please get rid of it in the future.

I just upgraded from 7.17.1 to 8.1.0. Now facing a similar issue.
helm upgrade --install elasticsearch elastic/elasticsearch -n gitlab  -f elasticseach-values.yaml
Error: UPGRADE FAILED: template: elasticsearch/templates/statefulset.yaml:303:27: executing "elasticsearch/templates/statefulset.yaml" at <.Values.roles.master>: can't evaluate field master in type interface {}
The big concern is when I try to revert back to version 7.17.1, this time, I can't go back as the error says there is already a version moved on 8.1.0 (usr/share/elasticsearch/data) file has version maintained.


Node.js Port

Thanks very much for sharing smartquotes!
I recently pulled the regular expressions out into a Node.js module for distribution via npm, so that I could use the core string-replacement bit in some of my own open source work:
https://github.com/kemitchell/smart-quotes.js
I hope you don't mind that I gave you proper attribution, both in the README and in package.json.
I've watched smartquotes, so I keep my tiny port up to date with progress on your original. I also added you as a contributor to the GitHub repo, just in case.
Thanks,
Kyle

I don't get it—why didn't you just collaborate with @kellym to restructure this library so that it could be used through npm?

I'd agree with @callumacrae, I'd like to add support here to run this server-side as well, so that may remove the need for you to maintain a separate repo just for that. I think @callumacrae is on it :)

This was resolved in #8 :smile:


How to debug "Server negotiation failed." ?

How can I find why this happens?
Request starting HTTP/1.1 GET http://localhost:1965/1/Driver/negotiate?clientProtocol=1.4&connectionData=[{"Name":"DriverHub"}]
            app.UseSignalR(routes =>
            {
                routes.MapHub<PassengerHub>(Routes.PassengerArea1); // PassengerArea1 = "/1/Passenger";
                routes.MapHub<DriverHub>(Routes.DriverArea1); // DriverArea1 = "/1/Driver";
            });

Microsoft.AspNet.SignalR.Client
        static void Main(string[] args)
        {
            var connection = new HubConnection("http://localhost:1965/1/Driver", false);
            var proxy = connection.CreateHubProxy("DriverHub");
            connection.Start().Wait();
        }

The old SignalR client is incompatible with new SignalR.

Ah, how can I connect from Android and .NET to it?

You can't at this point. The .NET client is being worked on in a branch. It should be possible to direct connect using a websocket client as well. You'd need to parse the invocation messages though

Is there exist a description of protocol?

It's too early at this point. We're still getting the basic functional working. This isn't stable enough to use for anything real as yet. The first client targets will be JavaScript and .NET

So do you suggest to use Microsoft.AspNetCore.SignalR.Server": "0.2.0-*?

I don't really have a recommendation for using SignalR on ASP.NET Core at the moment, this stuff just isn't ready yet. Some people have been using Microsoft.AspNetCore.SignalR.Server with some success though don't bother filing bugs on it because we're not fixing them. Some people have been using SignalR 2.x with Owin on ASP.NET Core on .NET Framework.


Up2 board, ValueError: Error initialising UART

Can not run the sample UART files...
Initializing UART...Traceback (most recent call last):
File "uart_sender.py", line 34, in
u = mraa.Uart("0")
File "/usr/lib/python3.5/dist-packages/mraa.py", line 1061, in init
this = _mraa.new_Uart(*args)
ValueError: Error initialising UART

so a couple of quick questions on this. What OS are you using ubilinux/ubuntu? and also did you get from the ppa or did you build it on your system? Also whats your mraa version?

@Nyceane #878 This commit actually resolves an issue similar to what you're seeing. Because this fix is fairly recent, you might not have it if you installed mraa from ppa. However, if you build mraa locally, you should be able to get UART to work on the UP2 board.

@Nyceane, is this still actual?

yes, using Ubuntu

What about other questions? That information is necessary to understand the situation and help you.

So @Nyceane, are you up to providing the information requested? Without it we can't help you any further.

Closing for no reply.


As an external user, I can draft, create, and submit new applications

As a external user I want to draft, create, and submit new applications So That I can easily satisfy regulatory requirements.
Additional Context

https://www.figma.com/file/rCVrqmQNEPSooT75LP2qqd/LRS-Dashboard?node-id=4%3A215&t=YazQTv4Nhggl4US1-0
enter text here

Acceptance Criteria

[ ] Given  an application is incomplete or fails validation rules, When a user tries to submit it, Then the user should be unable to submit while incomplete
[ ] Given an application is incomplete, When a user tries to "Save as Draft", Then the draft should be saved
[ ] Given a user is viewing their drafts, When they click on a draft, Then they should retrieve the draft they saved and be able to continue completing the form.
[ ] Given a user has submitted a form, When the form is processed on the backend, Then an email notifciation should be sent indicating the submission has been received.
[ ] TODO: Applications should also be "bundles" of forms
[ ] TODO: Anything else...?

Designs
Link any designs here
https://www.figma.com/file/rCVrqmQNEPSooT75LP2qqd/LRS-Dashboard?node-id=4%3A215&t=YazQTv4Nhggl4US1-0
Definition of Done

[ ] Ready to Demo in Sprint Review
[ ] Does what I have made have appropriate test coverage?
[ ] Documentation and/or scientific documentation exists and can be found
[ ] Peer Reviewed by 2 people on the team
[ ] Manual testing of all PRs in Dev and Prod
[ ] Merged

Can go ahead with this task, expecting designs shortly.  Also related to forms engine #162.

This task is sort of blocked by the question of application bundling/packaging.  We need a decision, likely need to require designs to include application bundling.

Also, as per mural designs, we need to handle Client/CSAP/Approving Authority designs, but maybe prioritize approving authority stuff later?  We need more core workflows fleshed out for dev team.

This task is also sort of blocked by needing application bundling/packaging.  Our current designs miss those, but since we know we'll need it, we should revise designs.
#294 - marked as blocking this story.


Not working.

module not found or .default is not a function.
gave up.

How did you try importing the module? Require, or import?


Adding Code of conduct file

As the project does not contain code of conduct file I would like to add it.
I am a LGMSOC'21 participant kindly assign it to me.

It's already there Nisha please check it

@kashish-ag sorry for the mistake .


ARROW-13663: [C++] RecordBatchReader STL-like iteration

Allow STL-like iteration on RecordBatchReader instances, for convenience.

Added some basic tests.
If more sophisticated ones are also needed, could you give a brief outline of those? @pitrou

Thank you very much @dhruv9vats !


DeviceID not on the linked Smartthigs page

Describe the bug
Documentation links to the Smarthings site to  get DeviceID. "CurrentState" is not there anymore. A Device ID that is available fails in the integration (a confirmation popup on the TV does appear but HA integration fails upon allowing) with "SmartThings TV deviceID not found."
Installation with Smartthings cannot be completed.
Screenshots

Environment details:

Environment (HASSIO, Raspbian, etc): HAOS
Home Assistant version installed: 2023.8.3
Component version installed: 0.12.0
Last know working version:
TV model: NU8000

Output of HA logs
Only this
2023-08-31 19:15:22.486 ERROR (MainThread) [custom_components.samsungtv_smart] Connection to SmartThings TV not available.

Solution: the device was disconnected from ST for some reason. After removing and re-adding, the Device ID works.


Permit OPTIONS request against any url, fixes #19398

I've tested this (with https://github.com/aidanhs/Docker-Terminal) and it fixes #19398 (options requests working against any URL).

I'm okay with adding this, but tests fail:
03:32:04 ----------------------------------------------------------------------
03:32:04 FAIL: docker_api_test.go:18: DockerSuite.TestApiOptionsRoute
03:32:04
03:32:04 docker_api_test.go:21:
03:32:04     c.Assert(status, checker.Equals, http.StatusOK)
03:32:04 ... obtained int = 404
03:32:04 ... expected int = 200
03:32:04
03:32:04
03:32:04 ----------------------------------------------------------------------
03:32:04

http://www.gorillatoolkit.org/pkg/mux#Route.Path

The template must start with a "/".

Oops! Now fixed. At least, I can see TestApiOptionsRoute has passed in the tests run so far.

LGTM

LGTM!


output contains asyncGenerator(), but I never use it.

my rollup version is 0.36.3, my config is as below:
import babel from 'rollup-plugin-babel'
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'
import uglify from 'rollup-plugin-uglify';

var minify = process.env.NODE_ENV === 'release'

export default {
  entry: 'src/index.js',
  format: 'umd',
  moduleName: 'index',
  plugins: [
    babel({
      presets: [ 'es2015-rollup' ],
      babelrc: false,
      comments: false,
      runtimeHelpers: true
    }),
    resolve({
      jsnext: true,
      main: true,
      browser: true,
    }),
    commonjs(),
    (minify && uglify()),
  ],
  dest: minify ? 'dist/index.min.js' : 'dist/index.js'
}

There are 3 features never used.
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
  return typeof obj;
} : function (obj) {
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};

var asyncGenerator = function () {
  function AwaitValue(value) {
    this.value = value;
  }

  function AsyncGenerator(gen) {
    var front, back;

    function send(key, arg) {
      return new Promise(function (resolve, reject) {
        var request = {
          key: key,
          arg: arg,
          resolve: resolve,
          reject: reject,
          next: null
        };

        if (back) {
          back = back.next = request;
        } else {
          front = back = request;
          resume(key, arg);
        }
      });
    }

    function resume(key, arg) {
      try {
        var result = gen[key](arg);
        var value = result.value;

        if (value instanceof AwaitValue) {
          Promise.resolve(value.value).then(function (arg) {
            resume("next", arg);
          }, function (arg) {
            resume("throw", arg);
          });
        } else {
          settle(result.done ? "return" : "normal", result.value);
        }
      } catch (err) {
        settle("throw", err);
      }
    }

    function settle(type, value) {
      switch (type) {
        case "return":
          front.resolve({
            value: value,
            done: true
          });
          break;

        case "throw":
          front.reject(value);
          break;

        default:
          front.resolve({
            value: value,
            done: false
          });
          break;
      }

      front = front.next;

      if (front) {
        resume(front.key, front.arg);
      } else {
        back = null;
      }
    }

    this._invoke = send;

    if (typeof gen.return !== "function") {
      this.return = undefined;
    }
  }

  if (typeof Symbol === "function" && Symbol.asyncIterator) {
    AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
      return this;
    };
  }

  AsyncGenerator.prototype.next = function (arg) {
    return this._invoke("next", arg);
  };

  AsyncGenerator.prototype.throw = function (arg) {
    return this._invoke("throw", arg);
  };

  AsyncGenerator.prototype.return = function (arg) {
    return this._invoke("return", arg);
  };

  return {
    wrap: function (fn) {
      return function () {
        return new AsyncGenerator(fn.apply(this, arguments));
      };
    },
    await: function (value) {
      return new AwaitValue(value);
    }
  };
}();

var get$1 = function get$1(object, property, receiver) {
  if (object === null) object = Function.prototype;
  var desc = Object.getOwnPropertyDescriptor(object, property);

  if (desc === undefined) {
    var parent = Object.getPrototypeOf(object);

    if (parent === null) {
      return undefined;
    } else {
      return get$1(parent, property, receiver);
    }
  } else if ("value" in desc) {
    return desc.value;
  } else {
    var getter = desc.get;

    if (getter === undefined) {
      return undefined;
    }

    return getter.call(receiver);
  }
};

var set$1 = function set$1(object, property, value, receiver) {
  var desc = Object.getOwnPropertyDescriptor(object, property);

  if (desc === undefined) {
    var parent = Object.getPrototypeOf(object);

    if (parent !== null) {
      set$1(parent, property, value, receiver);
    }
  } else if ("value" in desc && desc.writable) {
    desc.value = value;
  } else {
    var setter = desc.set;

    if (setter !== undefined) {
      setter.call(receiver, value);
    }
  }

  return value;
};

I have exactly the same problem.

I have the same problem and setting externalHelpers to false doesn't remove it either. Has anyone found a work around this?

Set externalHelpers to true in the configuration to remove this.

@kennetpostigo If I use the externalHelpers option I get this error ReferenceError: babelHelpers is not defined if I run a test build in the browser.

@hollowdoor did you turn this on in the rollup.config.js? It's meant to go in there. Also are you using es2015-rollup?

Oh no wait I was wrong. If I change it to false it inserts the asyncGenerator again. What's weird about this is that it works for a test build, but not for a sub-module. rollup keeps throwing The keyword 'await' is reserved .
@kennetpostigo I don't have a rollup.config.js file. I use rollup as a module. And I turned it on/off in there. If I turn externalHelpers to true I get ReferenceError: babelHelpers is not defined. If I turn externalHelpers to false I get the asyncGenerator in the build, and also a The keyword 'await' is reserved error when I try to build in a consuming script.
So the story goes I have a little module I've published that works when I run isolated tests. It doesn't if I try to include that module into an iife build.

@hollowdoor gotcha. Flipping it to true was the only quick fix I found for this. I haven't tried using it as a module but can't imagine it being much different. Are you using es2015-rollup? It should include the helpers

Yes I'm using es2015 rollup. The helpers aren't being included for whatever reason.

Ok. It kind of sucks, but what I had to do was let the asyncGenerator remain. In my app build I used the allowReserved option on the rollup's acorn option like this acorn: {allowReserved: true}. So no {externalHelpers:true} in my module's config.
Now my build config for the app looks like this:
export default {
  entry: 'src.js',
  format: 'iife',
  acorn: {allowReserved: true},
  plugins: [
      babel(),
      nodeResolve({ jsnext: true, main: true }),
      commonjs()
  ],
  dest: 'main.js',
  moduleName: 'none'
};

Rather strange bug I must say.
Related https://github.com/rollup/rollup/issues/564 but not the same. I hope things keep working because now my setup could be clobbered by reserved words. Also there are now duplicates of asyncGenerator. :(

Am unable to reproduce this with the current version (3.0.0) – does anyone have a sample repo illustrating the problem? Thanks

I don't know if this will help.
I have a repo with a library https://github.com/hollowdoor/dom_compose
That library is bundled as es2015, and commonjs modules.
I have a consuming app that has this configuration:
import babel from 'rollup-plugin-babel';
import commonjs from 'rollup-plugin-commonjs';
import nodeResolve from 'rollup-plugin-node-resolve';

export default {
  entry: 'src.js',
  format: 'iife',
  acorn: {allowReserved: true},
  plugins: [
      babel(),
      nodeResolve({ jsnext: true, main: true }),
      commonjs()
  ],
  dest: 'main.js',
  moduleName: 'none'
};

The bablrc for the app looks like this:
{
  "presets": ["es2015-rollup"]
}

The output file main.js contains all kinds of extra/duplicate babel helper definitions.
For the app if I set externalHelpers to true it puts the dependencies in the arguments of the iife. If I set externalHelpers to false I get all kinds of helpers I don't use.
For the dom-compose module if externalHelpers is false when I build the app script I get an async is a reserved word error.
Finally if I don't set externalHelpers (default false) in both the module, and app I can set acorn to allow reserved true. But then I get duplicate babel helper definitions.
I've considered just not using es2015 (except the modules) in my module, but I think that would defeat the purpose of compiling a module that's meant to be consumed by browsers. The other thing I'm considering is switching to buble for the module, and continue to use babel for the app. That wouldn't get rid of the unused babel helpers in the app though.
It could be that I just don't know what I'm doing. :)
Or there's some deep bug, or conflict way down in some other module. Whatever it is it's a mystery to me.

@hollowdoor thanks. Are you getting the same results with the latest versions of rollup-plugin-babel and babel-preset-es2015-rollup? It seems to be behaving for me.

The other thing I'm considering is switching to buble for the module, and continue to use babel for the app

I'd recommend that, and not just because I'm biased – the modules will get smaller as a result, and you won't have the weird typeof polyfill appearing multiple times in your app. You would need to use the dangerousForOf and dangerousTaggedTemplateString transforms (as far as I can tell from reading the source code, this is a case where it's legit to use those transforms).

It might be a day, or so before I check the latest babel-preset-es2015-rollup. I've got version 1.2 for babel-preset-es2015-rollup for some reason. Which is weird because I just installed it recently.
I do think I'll switch to buble anyway. For modules it would be better fit. I will need the dangerous transforms for testing, or maybe not. I can test with a browser that supports template literals. As far as compiling the module itself I don't think it needs to know that it's a template tag. But I will need the dangerousForOf.
Before I do switch I'll try testing the newer babel-presets to see if it's working. I'll try to remember to report back here.

https://github.com/rollup/rollup/issues/1595

I have a reproduction in the modernization branch of abstract-state-router.
Using the latest versions of babel-core, babel-plugin-external-helpers, babel-preset-es2015, rollup, and rollup-plugin-babel, my output (bundle.js) contains a big chunk of asyncGenerator code that should not be necessary or included at all.

Just for anyone interested, this can be 'fixed' for now in the userland with:
import babel from 'rollup-plugin-babel'
import { list as babelHelpersList } from 'babel-helpers'

// ...

  babel({
    plugins: [
      'external-helpers',
    ],
    // fixing temporary rollup's regression, remove when rollup/rollup#1595 gets solved
    externalHelpersWhitelist: babelHelpersList.filter(helperName => helperName !== 'asyncGenerator'),
  }),

Btw. a proper “fix” is nearly complete, should arrive some time next week. Just doing some final touches now.

@lukastaegert is there any open PR on this? would love to see the code and heuristics to determine that this can be tree-shaken. It is quite a non-trivial case

Not a PR yet but it’s all at https://github.com/lukastaegert/rollup/tree/simple-object-shape-tracking
It can already tree-shake babel-helpers and quite a few more complex cases. However, I want to included basic handling for getters first before I make this an official PR. I would love if someone took a look in case I overlooked something important.

Would have to spend more time analyzing whats going there, its not the shortest PR made ;) I've looked mainly on the tests and I see some dope job done 👏 Once you create a PR, feel free to ping me I'll try to do more thorough review - but some more insight on the nodes visitors would be good to have, I haven't dived into those parts of the rollup's codebase before.
I must say that I'm really impressed by the changes you have done to rollup's algorithm and the scope of your PRs - it's always amazing to see a PR when somebody just pops up (I believe you have started contributing to rollup recently, and you have started with a huge rewrite, correct me if im wrong) and do such big changes to the codebases. It reminds me of @jimbolla's PR to react-redux, also a great rewrite 😃
What is missing at the moment for the community is a guide/article on how to write a tree-shakeable code. If you are willing to have a chat some day about this, I might write up something - always wanted to, just had to find time to dive deeper into tree-shaking algorithms and I believe you are one of the most informed people at the moment :)
Ofc while a guide might be helpful for the start, it should be later incorporated (after splitting it appropriately) as docs for your eslint plugin. Also about the plugin - I conclude from the Readme that it is reimplementing tree-shaking algorithm, would it be possible to extract tree-shaking algo into a separate library which could be used both by rollup and the plugin (and possibly by other projects)?
Also I've created a babel plugin for automatic #__PURE__ annotation insertion - would love to hear your feedback if that thing makes any sense to you or am I just a little bit delusional 😉

Thanks for the kind words 😃. About the plugin, the short version of the story goes like this (which is basically the story how I came to be a rollup contributor):

Promised to hold a talk about rollup at a local user group meetup
When playing around with rollup, was shocked at how easily seemingly random code changes could break tree-shaking
Thought that it would really help to have a plugin that highlights code that breaks the algorithm
Dove into rollup's code. Found it to be somewhat convoluted in places and not at all generic. Decided not to copy rollup's code but write my own generic implementation + automated tests against rollup
Had to add a lot of exceptions to get the highlighting right
Thought: Maybe I should just change rollup to work more like my plugin…

So, after all, the plugin had the new algorithm first. But due to how ESLint works as compared to rollup, I could not just copy the code back. But yes, the ultimate goal must be to extract the algorithm and use it in the plugin. With the recent advances of rollup's algorithm, it is getting harder and harder for the plugin to keep up.
The main obstacle here is that rollup's algorithm relies on adding properties to AST nodes while with ESLint, this is strictly forbidden. But then again, the plugin does not need the whole algorithm but just the "hasEffects*" functions attached to the AST nodes. Time will find a solution here. My feeling is that we should first find a way for rollup plugins to add to/modify the AST visitors which would enable things like proper JSX plugins or plugins that make tree-shaking selectively more or less strict.
I am very aware that what is missing most is good guides for the community. Also, my plugin may seem very technical to the common user. In a future version, all errors could have much more user-oriented messages and wiki links attached educating the user about good and bad patterns. But it's a lot of work and I do not want to spread my resources too thinly. For now, one thing I keep stumbling about is that when doing an ES6 library with named exports you should NEVER add them again as properties of a default export. You can try it out with loadesh-es. In its current form, basically not tree-shaking will take place. However, if you go into your node_modules and remove just the default export, the imported size will instantly drop to half. Much more will be possible in the future once function return value handling is implemented. Maybe at some point I will open an issue about this.
I think your plugin can be very useful but its universal nature is dangerous. If there is a way to limit the plugin to individual files that you have control over e.g. by putting a comment in the first line (or, does babel have access to file names?), this would make it potentially even more useful because you could just let it run in your main index file. But that's just an idea. Wrongly placed "pure" comments in a library that others depend on can cause funny things. Unless you actually write in a side-effect free way, maybe that's the main takeaway.

For now, one thing I keep stumbling about is that when doing an ES6 library with named exports you should NEVER add them again as properties of a default export. You can try it out with loadesh-es. In its current form, basically not tree-shaking will take place.

I havent realize that lodash does this 🙈 I guess using babel-plugin-lodash is still the way to go. From what I've heard though lodash@5 is going to have cherry-picked modules exclusively - no default, probably no chaining. If one wants to use it in "the old-style" it will provide a babel plugin so the old-style can be rewritten to cherry-pick modules.
The same as attaching to the default export goes with static properties on classes imho - this too should be avoided when possible. Statics can be easily emulated with modules and that wont prevent tree-shaking (unless ofc one want to pass the class to some function).

I think your plugin can be very useful but its universal nature is dangerous.

I'm very well aware of that, the plugin must be used with caution.

If there is a way to limit the plugin to individual files that you have control over e.g. by putting a comment in the first line (or, does babel have access to file names?), this would make it potentially even more useful because you could just let it run in your main index file.

Babel plugin can have access to the filename, found a way to access it in other plugin. I will add possibility to scope with filenames as a feature request :)
But anyway - this is going a little bit offtopic here, gonna reach out to you on the twitter or something ;)

@lukastaegert Any more progress on your potential future PR?

The PR is here - https://github.com/rollup/rollup/pull/1667

Well, the PR has been submitted: rollup/rollup#1667
Unfortunately even though I have the power to merge it myself I do not have the power to release a new version of rollup and it appears @Rich-Harris is on an extended vacation with limited internet access.
Unfortunately npm installing rollup from a PR will not work because the build step will not be triggered. But if you depend on it or want to try it locally you can
git clone https://github.com/lukastaegert/rollup.git
git checkout simple-object-shape-tracking
npm install
npm run build
npm link

and then run npm link rollup in your other project. That should replace rollup with your local version.

Awesome, thanks

To make it even easier I have added a branch that contains all the build artefacts so you don't have to do the local setup.
npm install rollup@github:lukastaegert/rollup#simple-object-shape-tracking-bundled

should work now and can also just be added to your package.json.

@lukastaegert I've prepared (what a pun!) a PR, if you merge it and rebase ur branch against updated master, it should get even easier ;)

Joy of joys!

I‘m currently on the road but I will certainly take a look later that evening! Though my solution of adding the artifacts to a branch certainly works, it is really inflexible and needs to be updated manually. If this works, this will make things much easier for everyone in the future. Talking about babel, isn’t it possible to use a PR as the version in their REPL? Now that would be quite a feat for rollup...

Talking about babel, isn’t it possible to use a PR as the version in their REPL? Now that would be quite a feat for rollup...

It certainly would be. I think the most important PRs that got this implemented there are:
https://github.com/babel/website/pull/1284
https://github.com/babel/website/pull/1356

FWIW, it appears that Rollup v0.51 has fixed this issue - at least according to my test case (cf. https://github.com/faucet-pipeline/faucet-pipeline-js/commit/f4a16672d07d051a2111c0fdf575cbb75c738fa7).

Thanks for the info, I forgot about this issue number. There is now a proper test in place that the actual babel helpers are removed completely if unused so I will close this now.


WorkGiver_HaulGeneral errors with inventory Thing

KabanStockpile red errors when pawn is asked to carry thing from inventory due to thing's map being null.
It just needs a null check before this for map.
https://github.com/ubergarm/RimWorld-KanbanStockpile/blob/999ea236e0cbc8791b397998a3f73df6ec34d01c/Source/Main.cs#L102
For reference:
JobDriver threw exception in initAction for pawn PK driver=JobDriver_PlantSowWithSeeds (toilIndex=7) driver.job=(SowWithSeeds (Job_11670139) A=(113, 0, 128) B=Thing_Seed_Healroot1145147)
System.NullReferenceException: Object reference not set to an instance of an object
  at RimWorld.StoreUtility.GetSlotGroup (Verse.IntVec3 c, Verse.Map map) [0x00000] in <05a3807735854773b99a2f55213b48e4>:0
  at KanbanStockpile.KSUtil.TryGetKanbanSettings (Verse.IntVec3 cell, Verse.Map map, KanbanStockpile.KanbanSettings& ks, RimWorld.SlotGroup& slotGroup) [0x00007] in <d471e81246d34a459d764b88f41f380e>:0
  at KanbanStockpile.HaulAIUtility_HaulToStorageJob_Patch.Postfix (Verse.AI.Job& __result, Verse.Pawn p, Verse.Thing t) [0x0001c] in <d471e81246d34a459d764b88f41f380e>:0
  at (wrapper dynamic-method) Verse.AI.HaulAIUtility.Verse.AI.HaulAIUtility.HaulToStorageJob_Patch1(Verse.Pawn,Verse.Thing)
  at RimWorld.WorkGiver_Haul.JobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x0000c] in <05a3807735854773b99a2f55213b48e4>:0
  at RimWorld.WorkGiver_HaulGeneral.JobOnThing (Verse.Pawn pawn, Verse.Thing t, System.Boolean forced) [0x0000a] in <05a3807735854773b99a2f55213b48e4>:0
  at SeedsPlease.JobDriver_PlantSowWithSeeds+<>c__DisplayClass8_0.<TryToSetAdditionalPlantingSite>b__0 () [0x0007e] in <33d31017998048a19bf1252ffc5bd94b>:0
  at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x001de] in <05a3807735854773b99a2f55213b48e4>:0

Oh thanks so much notfood for the report!
After my new minecraft modpack release settles down, I plan to do update this mod before the year is out!
Cheers!


new cloud function along with integration in frontend, minor fixes, firebase rules

Description
The PR completes the new cloud function which will make the code more cleaner and remove the dependency on having complicated/unsafe firebase rules and finishes the integration of this cloud function into the frontend.
This also features abstract classes that can give location and timelines of requests and offers directly in one request
Motivation
The statuses of the requests being stored as data are different from the screens that we have. A request with the same value for its status can appear in different screens based on factors such as offers made and who is making the request.
This logic is now separated into a cloud function so that the frontend can query based on its abstract status and backend hides the complexity.
This also prevents the frontend from having to query and obtain data that it shouldn't be allowed to (for example, all the timeline events for a request when the CAVs offer was rejected, or the locations of the CAVs when viewing the offers)
This also gives us greater freedom to change the logic in the backend later while maintaining the same interface.
This also helps us maintain and fix bugs in the frontend with more ease than earlier with all the complicated business logic being involved.
Testing Guidelines
Release Checklist

[ ] This code has unit tests
[ ] I have a plan to verify that these changes are working as expected after deploy
[ ] I have a plan for how to revert, rollback, or disable these changes if things are not working as expected

Security Checklist
This PR creates, modifies, or deletes:

[ ] API routes: API routes, parameters, or user authorization
[ ] Authentication: Authentication mechanism
[ ] Credentials: Server side credentials, or secrets in configuration / source code
[ ] Cryptography: Encryption, hashing, certificates, signatures, random numbers, etc.
[ ] User data: personal information handling, logs, error messages, etc.

Additional Notes

Resolved some conflicts 👍


Deploying a k8's cluster with pod_network_type == "weave" does not work. The nodes do not transition to the ready state.

I tried to deploy a k8's cluster with the pod_network_type set to "weave". When this is deployed the nodes do not transition to the Ready state.
The status of the nodes is shown below:
[centos@k8s-master-1 ~]$ kubectl get nodes
NAME           STATUS     ROLES     AGE       VERSION
k8s-master-1   NotReady   master    1m        v1.8.1
k8s-minion-1   NotReady       32s       v1.8.1
k8s-minion-2   NotReady       32s       v1.8.1
I'm not sure where to start looking. Any pointers will be greatly appreciated. Thank you so much!

Thanks again @vinayvenkat -- we've got this noted in #21 -- been sitting out here needing attention for a while. I'm going to add your comment there, and we can track it there. Feel free to subscribe to notifications on that issue, too.


✨(videos) add video views counter panels

Purpose
The video view count could be a useful indicator in the video details dashboard.
Proposal
add two simple gauge panels to show the number of video views and and the number of distinct viewers.

Wow great. Do you have a snapshot to give an overview of your new panels?

The panels just show a number next to the initial verbs panel ) Here is the preview)

Cool. Are gauges a real need? I think a raw number would be sufficient as we don't have a maximal value to compare with (ratio).

You are right) Gauges are not needed, (I found them playful for some reason but it ends up more as a distraction) Updated using stat panels)

You are right) Gauges are not needed, (I found them playful for some reason but it ends up more as a distraction) Updated using stat panels)

But gauges can be relevant for the courses videos event distribution rather than a classical histogram

The stat panel view by day graph is lacking the ability to show the view count number on hover, I propose to add a separate panel for the view by day graph.

LGTM
Note that I've added a commit to make description more precise!
Can you commit the grafana upgrade separately?

Thanks for the update)


FR: Option for multi-line arrays to be auto determined by properties with type List

Is Your Feature Request Related to a Problem? Please Describe.
In my case, "Force key values to be multi-line arrays" has to be manually maintained to be kept in sync with the List property types given to keys. I don't have any special case where I'd not want a List property to not be formatted as a multi-line array.
Describe the Solution You'd Like
If the Obsidian API allows for it, provide an option under "Format YAML Array" which can be toggled on e.g. "Automatically format List properties as multi-line arrays". When off, don't do anything. The current "Force key values to be multi-line arrays" would be in addition to automatically formatting List properties, so both can be used at once.
Describe Alternatives You've Considered
Keep manually maintaining "Force key values to be multi-line arrays".
Thanks.

Hey @redactedscribe . Is this not currently possible by setting the YAML array format under general and then enabling the format YAML Arrays option? I was pretty sure that was how that worked, but I could be wrong.

@pjkaufman If I've understood you correctly, my settings are already set up that way.
I've got General > "YAML (aliases|tags) section style" both set to multi-line, and all toggles under "Format YAML Array" enabled, with "Default YAML array section style" set to multi-line too.
Without "Force key values to be multi-line arrays" populated with "authors" for example, the authors: key remains as such on lint (no  [] appended). Adding "authors" back to the list causes linting to add the brackets. When I check the properties, authors is set to type List.

Sorry @redactedscribe , I forgot where that setting is. The setting in the screenshot for the default normal YAML array needs to be set to multiline:

Do note that an empty multiline array is set to [] because properties would not accept an empty multiline item as anything except null in the display.

"Default YAML array section style" set to multi-line too.

@pjkaufman It is already set to multi-line. Maybe I have some conflicting option or maybe it's a bug?

Is the option to format regular arrays enabled? If you don't think so, could you provide your data.json?

{
  "ruleConfigs": {
    "Remove Space around Fullwidth Characters": {
      "Ensures that fullwidth characters are not followed by whitespace (either single spaces or a tab). Note that this may causes issues with markdown format in some cases.": false
    },
    "Space between Chinese and English or numbers": {
      "Ensures that Chinese and English or numbers are separated by a single space. Follows these [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)": false,
      "Ensures that Chinese and English or numbers are separated by a single space. Follow this [guidelines](https://github.com/sparanoid/chinese-copywriting-guidelines)": false
    },
    "escape-yaml-special-characters": {
      "enabled": false,
      "try-to-escape-single-line-arrays": false
    },
    "format-tags-in-yaml": {
      "enabled": true
    },
    "format-yaml-array": {
      "enabled": true,
      "alias-key": true,
      "tag-key": true,
      "default-array-style": "multi-line",
      "default-array-keys": true,
      "force-single-line-array-style": "",
      "force-multi-line-array-style": "authors\ncssclasses"
    },
    "insert-yaml-attributes": {
      "enabled": false,
      "text-to-insert": "aliases: \ntags: "
    },
    "move-tags-to-yaml": {
      "enabled": false,
      "how-to-handle-existing-tags": "Nothing",
      "tags-to-ignore": ""
    },
    "remove-yaml-keys": {
      "enabled": false,
      "yaml-keys-to-remove": ""
    },
    "yaml-key-sort": {
      "enabled": true,
      "yaml-key-priority-sort-order": "",
      "priority-keys-at-start-of-yaml": true,
      "yaml-sort-order-for-other-keys": "Ascending Alphabetical"
    },
    "yaml-timestamp": {
      "enabled": false,
      "date-created": true,
      "date-created-key": "date created",
      "force-retention-of-create-value": true,
      "date-modified": true,
      "date-modified-key": "date modified",
      "format": "dddd, MMMM Do YYYY, h:mm:ss a"
    },
    "yaml-title": {
      "enabled": false,
      "title-key": "title",
      "mode": "first-h1"
    },
    "yaml-title-alias": {
      "enabled": false,
      "preserve-existing-alias-section-style": true,
      "keep-alias-that-matches-the-filename": false,
      "use-yaml-key-to-keep-track-of-old-filename-or-heading": true
    },
    "capitalize-headings": {
      "enabled": false,
      "style": "Title Case",
      "ignore-case-words": false,
      "ignore-words": "macOS, iOS, iPhone, iPad, JavaScript, TypeScript, AppleScript",
      "lowercase-words": "via, a, an, the, and, or, but, for, nor, so, yet, at, by, in, of, on, to, up, as, is, if, it, for, to, with, without, into, onto, per"
    },
    "file-name-heading": {
      "enabled": false
    },
    "header-increment": {
      "enabled": true,
      "start-at-h2": true
    },
    "footnote-after-punctuation": {
      "enabled": true
    },
    "move-footnotes-to-the-bottom": {
      "enabled": false
    },
    "re-index-footnotes": {
      "enabled": true
    },
    "convert-bullet-list-markers": {
      "enabled": false
    },
    "emphasis-style": {
      "enabled": true,
      "style": "asterisk"
    },
    "no-bare-urls": {
      "enabled": false,
      "no-bare-uris": false
    },
    "ordered-list-style": {
      "enabled": true,
      "number-style": "ascending",
      "list-end-style": "."
    },
    "proper-ellipsis": {
      "enabled": false
    },
    "remove-consecutive-list-markers": {
      "enabled": false
    },
    "remove-empty-list-markers": {
      "enabled": false
    },
    "remove-hyphenated-line-breaks": {
      "enabled": false
    },
    "remove-multiple-spaces": {
      "enabled": true
    },
    "strong-style": {
      "enabled": true,
      "style": "asterisk"
    },
    "two-spaces-between-lines-with-content": {
      "enabled": false
    },
    "compact-yaml": {
      "enabled": false,
      "inner-new-lines": false
    },
    "consecutive-blank-lines": {
      "enabled": true
    },
    "convert-spaces-to-tabs": {
      "enabled": false,
      "tabsize": 4
    },
    "empty-line-around-code-fences": {
      "enabled": true
    },
    "empty-line-around-tables": {
      "enabled": true
    },
    "heading-blank-lines": {
      "enabled": true,
      "bottom": true,
      "empty-line-after-yaml": true
    },
    "line-break-at-document-end": {
      "enabled": true
    },
    "paragraph-blank-lines": {
      "enabled": true
    },
    "remove-empty-lines-between-list-markers-and-checklists": {
      "enabled": true
    },
    "remove-link-spacing": {
      "enabled": true
    },
    "space-after-list-markers": {
      "enabled": true
    },
    "trailing-spaces": {
      "enabled": true,
      "twp-space-line-break": true
    },
    "force-yaml-escape": {
      "enabled": false,
      "force-yaml-escape-keys": ""
    },
    "headings-start-line": {
      "enabled": true
    },
    "remove-trailing-punctuation-in-heading": {
      "enabled": true,
      "punctuation-to-remove": ".,;:!。，；：！ What you say is working, but only for the known keys like aliases and tags, ...

It looks like only keys under "text-to-insert": are formatted as x: []. If I remove aliases: \ntags: , all arrays get formatted as x: []. I think this is a bug.

@pjkaufman Does the JSON file help to reveal our misunderstanding or what the problem may be?

Hey @redactedscribe , I have not taken a look yet. However I would like to clarify that you are not trying to do convert a non-list key to a list in the YAML. That is to say, you are not doing the following, right?
Before Lint
---
authors:
---

After Lint expecting:
---
authors: []
---

If that is the case, then yes, the Linter will not do that unless you add the keys to the list of keys to force multi-line format on it since the Linter first looks for YAML arrays and then formats them,

I must be doing something wrong since I am not seeing the issue you are referring to.
The only way I could reproduce was having a list in YAML then manually removing all list indicators. Properties still considered the value to be a list, but the actual YAML was not formatted as an array. This is expected since Properties is not setting the content of the YAML properly for that value to be considered a YAML array.
If you look at the file in question, can you confirm that the property that properties is referring to is properly formatted as a list and the Linter is still not handling things properly?
The Linter expects one of the 2 following formats for an empty YAML array (tags and aliases are a little different):
key1: []
key2:
  -

If neither of those is present in the YAML then the Linter cannot do anything about it.

I would like to clarify that you are not trying to do convert a non-list key to a list in the YAML. That is to say, you are not doing the following, right?
...
If that is the case, then yes, the Linter will not do that unless you add the keys to the list of keys to force multi-line format on it since the Linter first looks for YAML arrays and then formats them.

Yes, that is what I am doing and it is the point of the feature request: For Linter to query Properties whether e.g. authors is a List (array) or not. With this information, Linter would not need a [] or - present to determine if the key is an array, nor for the user to have to manually add "authors" to the "Force key values to be multi-line arrays".

Maybe the coming improvements to properties will make this possible if it isn't already. Thank you too.

As it stands, this is not possible since there is no API for working with this data. As such I am going to close this until we have an API that is made accessible. This can be revisited at that time.

Someone posted that there may be a way to see which types exist for which fields:
app.metadataTypeManager.types["essai"] = {name: 'essai', type: 'number'}
app.metadataTypeManager.save()


add dynamic shape support for infer

Thank you for your contribution to the MindOCR repo.
Before submitting this PR, please make sure:

[x] You have read the Contributing Guidelines on pull requests
[x] Your code builds clean without any errors or warnings
[x] You are using approved terminology
[ ] You have added unit tests

Motivation
支持自研模型的动态Shape推理
1. 实现逻辑：
如果是动态shape模型，则优先加载训练侧的数据预处理模块
如果是静态shape/分档模型，则优先加载推理侧适配的数据预处理
2. 增加了cls_batch_num和rec_batch_num参数
和ppocr对齐，默认值取6，当模型的batch size是动态时，就从该参数中取值
Test Plan
(How should this PR be tested? Do you require special setup to run the test or repro the fixed bug?)
Related Issues and PRs
(Is this PR part of a group of changes? Link the other relevant PRs and Issues here. Use https://help.github.com/en/articles/closing-issues-using-keywords for help on GitHub syntax)

'--dynamic_dims' must have same value (such as [(32,32), (32,64)]) for every dynamic image_size model when converting to the mindspore lite mindir model


Add timestamp to configuration settings

This PR adds a timestamp to configuration settings of the last compilation time, which can be very helpful for plugins to detect configuration changes or show, how long has been passed since the last refreshments.

I cherry picked this in to develop as changelog was in conflict.

No problem as the PR was already long in the waiting queue 😉


CSV file seems different depending on the program.

I made a csv file:
var stream = XLSX.stream.to_csv(ws);
stream.pipe(fs.createWriteStream(fileName));
then uploaded the file to S3 and returned url.
When I download the file and open it, it looks well on my pc. (open on OS X using Numbers.)
But when I trying to open the same file on window OS using ms office, characters are broken.
it's Korean characters. and I want to encode the file UTF-8.
How can I resolve this problem?
it's the file.
20180307105408.csv.zip

The utility currently doesn't (but should) write the UTF8 BOM.  As a temporary workaround:
var stream = XLSX.stream.to_csv(ws);
var out = fs.createWriteStream(fileName);
out.on('open', function(fd) {
  out.write(new Buffer([0xEF,0xBB,0xBF]));
  stream.pipe(out);
});

If you would like to contribute a fix, in the write_csv_stream function add a line to push the BOM if it hasn't been written:
var BOM = false;
stream._read = function() {
	if(!BOM) { BOM = true; return stream.push("\uFEFF"); }

It works. Thanks!!


Bindings for the SQLite backup API

Does the node-sqlite3 contain bindings for the SQLite Backup API - http://www.sqlite.org/backup.html ?
If not, do you have any idea on how complex it will be to add bindings for these methods: sqlite3_backup_init, sqlite3_backup_step, sqlite3_backup_finish ?
Thanks.

+1 on this feature request.

+1

+1

+1 and a $200 bounty

+1

+1

+1 also lol @shovemedia

looks like #883 adds the functionality

I believe this has been implemented 🙂


Repo layout is strange

All the interesting code is under /prototypes while the top level directory contains artifacts of early research for the project. This makes it harder to find the README and confuses npm.
Imported from Georgia Tech github:
{"created_at":"2019-03-21T03:22:13Z","updated_at":"2019-03-21T13:38:56Z","closed_at":"2019-03-21T03:36:14Z","html_url":"https://github.gatech.edu/ekobrin3/2019-Spring-CSE6242-flowgridviz/issues/3","id":74658}

Fixed in https://www.github.com/erluko/flowgridviz/commit/e59ccc533cdafd0332fbc1de2d96efc198dce039  (v0.3.0 is the tag to use)
Imported from Georgia Tech github:
{"created_at":"2019-03-21T03:35:59Z","updated_at":"2019-03-21T03:35:59Z","html_url":"https://github.gatech.edu/ekobrin3/2019-Spring-CSE6242-flowgridviz/issues/3#issuecomment-40143","id":40143}


pgpainless-cli decrypt --verify-with changes the return code based on whether a valid signature was found or not

the SOP documentation says:

The return code of sop decrypt is not affected by the results of signature verification. The caller MUST check the returned VERIFICATIONS to confirm signature status. An empty VERIFICATIONS output indicates that no valid signatures were found.

But pgpainless-cli appears to change the return code based on whether a signature was present or not:
0 dkg@alice:/tmp/cdtemp.4jVsy5$ pgpainless-cli generate-key foo > foo.key
0 dkg@alice:/tmp/cdtemp.4jVsy5$ pgpainless-cli extract-cert < foo.key > foo.cert
0 dkg@alice:/tmp/cdtemp.4jVsy5$ echo test | pgpainless-cli encrypt foo.cert > test.msg
0 dkg@alice:/tmp/cdtemp.4jVsy5$ pgpainless-cli decrypt foo.key  < test.msg
test
0 dkg@alice:/tmp/cdtemp.4jVsy5$ pgpainless-cli decrypt --verify-out test.verifs --verify-with foo.cert foo.key  < test.msg
test
No verifiable signature found.
3 dkg@alice:/tmp/cdtemp.4jVsy5$ pgpainless-cli version --extended
PGPainless-SOP 1.3.16
https://codeberg.org/PGPainless/pgpainless/src/branch/master/pgpainless-sop

Implementation of the Stateless OpenPGP Protocol Version 04
https://datatracker.ietf.org/doc/html/draft-dkg-openpgp-stateless-cli-04

Based on pgpainless-core 1.3.16
https://pgpainless.org

Using Bouncy Castle 1.72
https://www.bouncycastle.org/java.html
0 dkg@alice:/tmp/cdtemp.4jVsy5$

Sidenote: This is actually a sop-java issue.
I fixed it in sop-java 4.1.2, so we can have a patch in Debian and will port the fix to newer releases as well :)

I released fixes for 4.1.2, 5.0.2, 6.0.1, 7.0.1 and 8.0.1.
I guess I will apply these fixes to pgpainless-cli versions 1.3.18 for Debian, and the latest main, which will eventually become 2.0.

I just released PGPainless version 1.3.18 with a fix :)


Postgres can't access KubeAPI with NetworkPolicies in place

Hi,
i'm running my cnpg in a namespace with NetworkPolicies in place. I tried allowing the IP (<IP_ADDRESS>:443) & namespace/port of the Kubeapi but nothing helps. Somehow the network connection doesn't even show up in cilium/hubble.
Any advice what i need to allow to make the DB work?
IMHO Somehow it's "not cool" that the DB calls the API directly, thought that's what the operator is for..
{"level":"info","ts":1671002792.2669437,"logger":"setup","msg":"Starting CloudNativePG Instance Manager","logging_pod":"nextcloud-db-1","version":"1.18.0","build":{"Version":"1.18.0","Commit":"2f6d1cef","Date":"2022-11-10"}}
{"level":"error","ts":1671002822.2689383,"msg":"Failed to get API Group-Resources","error":"Get \"https://<IP_ADDRESS>:443/api?timeout=32s\": dial tcp <IP_ADDRESS>:443: i/o timeout","stacktrace":"sigs.k8s.io/controller-runtime/pkg/cluster.New\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.13.1/pkg/cluster/cluster.go:160\nsigs.k8s.io/controller-runtime/pkg/manager.New\n\tpkg/mod/sigs.k8s.io/controller-runtime@v0.13.1/pkg/manager/manager.go:344\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cmd/manager/instance/run.runSubCommand\n\tinternal/cmd/manager/instance/run/cmd.go:100\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cmd/manager/instance/run.NewCmd.func1.1\n\tinternal/cmd/manager/instance/run/cmd.go:76\nk8s.io/client-go/util/retry.OnError.func1\n\tpkg/mod/k8s.io/client-go@v0.25.3/util/retry/util.go:51\nk8s.io/apimachinery/pkg/util/wait.ConditionFunc.WithContext.func1\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:222\nk8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtectionWithContext\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:235\nk8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtection\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:228\nk8s.io/apimachinery/pkg/util/wait.ExponentialBackoff\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:423\nk8s.io/client-go/util/retry.OnError\n\tpkg/mod/k8s.io/client-go@v0.25.3/util/retry/util.go:50\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cmd/manager/instance/run.NewCmd.func1\n\tinternal/cmd/manager/instance/run/cmd.go:75\ngithub.com/spf13/cobra.(*Command).execute\n\tpkg/mod/github.com/spf13/cobra@v1.6.1/command.go:916\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\tpkg/mod/github.com/spf13/cobra@v1.6.1/command.go:1044\ngithub.com/spf13/cobra.(*Command).Execute\n\tpkg/mod/github.com/spf13/cobra@v1.6.1/command.go:968\nmain.main\n\tcmd/manager/main.go:64\nruntime.main\n\t/opt/hostedtoolcache/go/1.18.7/x64/src/runtime/proc.go:250"}
{"level":"error","ts":1671002822.2692435,"logger":"setup","msg":"unable to set up overall controller manager","logging_pod":"nextcloud-db-1","error":"Get \"https://<IP_ADDRESS>:443/api?timeout=32s\": dial tcp <IP_ADDRESS>:443: i/o timeout","stacktrace":"github.com/cloudnative-pg/cloudnative-pg/pkg/management/log.(*logger).Error\n\tpkg/management/log/log.go:127\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cmd/manager/instance/run.runSubCommand\n\tinternal/cmd/manager/instance/run/cmd.go:119\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cmd/manager/instance/run.NewCmd.func1.1\n\tinternal/cmd/manager/instance/run/cmd.go:76\nk8s.io/client-go/util/retry.OnError.func1\n\tpkg/mod/k8s.io/client-go@v0.25.3/util/retry/util.go:51\nk8s.io/apimachinery/pkg/util/wait.ConditionFunc.WithContext.func1\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:222\nk8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtectionWithContext\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:235\nk8s.io/apimachinery/pkg/util/wait.runConditionWithCrashProtection\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:228\nk8s.io/apimachinery/pkg/util/wait.ExponentialBackoff\n\tpkg/mod/k8s.io/apimachinery@v0.25.3/pkg/util/wait/wait.go:423\nk8s.io/client-go/util/retry.OnError\n\tpkg/mod/k8s.io/client-go@v0.25.3/util/retry/util.go:50\ngithub.com/cloudnative-pg/cloudnative-pg/internal/cmd/manager/instance/run.NewCmd.func1\n\tinternal/cmd/manager/instance/run/cmd.go:75\ngithub.com/spf13/cobra.(*Command).execute\n\tpkg/mod/github.com/spf13/cobra@v1.6.1/command.go:916\ngithub.com/spf13/cobra.(*Command).ExecuteC\n\tpkg/mod/github.com/spf13/cobra@v1.6.1/command.go:1044\ngithub.com/spf13/cobra.(*Command).Execute\n\tpkg/mod/github.com/spf13/cobra@v1.6.1/command.go:968\nmain.main\n\tcmd/manager/main.go:64\nruntime.main\n\t/opt/hostedtoolcache/go/1.18.7/x64/src/runtime/proc.go:250"}
{"level":"info","ts":1671002822.2808444,"logger":"setup","msg":"Starting CloudNativePG Instance Manager","logging_pod":"nextcloud-db-1","version":"1.18.0","build":{"Version":"1.18.0","Commit":"2f6d1cef","Date":"2022-11-10"}}

Example [non-working] NetPol:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: nextcloud-allow-cnpg
  namespace: nextcloud
spec:
  egress:
  - ports:
    - port: 443
      protocol: TCP
    - port: 6443
      protocol: TCP
    to:
    - ipBlock:
        cidr: <IP_ADDRESS>/32
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: default
    - namespaceSelector:
        matchLabels:
          kubernetes.io/metadata.name: kube-system
  podSelector: {}
  policyTypes:
  - Egress

Cluster Config:
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: nextcloud-db
  namespace: nextcloud
spec:
  instances: 1
  imageName: ghcr.io/cloudnative-pg/postgresql:15

  bootstrap:
    initdb:
      import:
        type: microservice
        databases:
          - nextcloud
        source:
          externalCluster: nextcloud

  backup:
    barmanObjectStore:
      destinationPath: "s3://nextcloud-db/"
      endpointURL: "http://minio.minio.svc.cluster.local:9000"
      s3Credentials:
        accessKeyId:
          name: bucket
          key: accesskey
        secretAccessKey:
          name: bucket
          key: secretkey
      wal:
        compression: gzip
        #encryption: AES256
      data:
        compression: gzip
        #encryption: AES256
    retentionPolicy: "90d"

  resources:
    requests:
      memory: "64Mi"
      cpu: "50m"
    limits:
      memory: "1Gi"
      cpu: "1"

  storage:
    size: 10Gi

  externalClusters:
    - name: nextcloud
      connectionParameters:
        host: nextcloud-postgresql.nextcloud.svc.cluster.local
        user: nextcloud
        dbname: nextcloud
      password:
        name: nextcloud-postgres
        key: postgresql-password

Hi @Nold360
This is not the DB calling the API it's the manager inside that needs to communicate the state of the instance to the Kubernetes API, it's not the database at all.
You need to allow the communication in your network policy of the pods with the Kubernetes API, that's required and mandatory for the operator to work properly.
I'm converting this into a discussion since it's not an issue


blocksv3: add consensus value

In order to compare blocks coming from two sources, a validator client must consider both consensus and execution profit - without consensus reward information, the VC must fall back on unreliable heuristics that can be biased towards inefficient consensus packing, specially when execution payloads are the same which they are likely to be if the block producer is using the same mev relay for both beacon nodes.
The consensus computation is currently not a necessary part of block construction but given that blocks are constructed over a state, the information necessary to compute the is already present at block construction time.
This PR suggests a mandatory value to make validator client multiplexing easier at the expense of beacon node complexity - if instead it is optional, we are back to where we started where blocks cannot be compared across implementations.
The value has to be trusted, ie the BN could be report an inaccurate value but this is not a new risk.

This being 'required' means it's basically a breaking change. That's potentially ok, but it'll lead to some chaos for anyone that's already implemented v3 without it.
Because this is only used on devnets currently It's not impossible, I think ideally these new ones would be non required and therefore not a breaking change...

I think ideally these new ones would be non required and therefore not a breaking change...

Considering that the execution value is not fit for purpose without a corresponding consensus value, I consider this a bugfix that's part of the process of creating the API in the first place - my understanding is that nobody has really gone through with v3 yet and we're still in the early experiments phase, a point at which I think it's generally convenient to be lenient. Perhaps we should mark new API experimental and prone to breakage for this reason? An api that hasn't been hardened by a few rounds of implementation usually has small omissions like this.

Im not saying it has to go that way, just pointing out that this is technically breaking. Other teams should state their preference please.

We haven't finished implementing v3 yet so there's no breakage for us. We're happy with a mandatory consensus value.

internally we aren't using it, if vouch is using it it would break them but we can add it mandatory

lodestar has v3 implemented on a branch and we intend to include it in final deneb cut, but surely can include consensus value. mandatory is good for us as well :+1:

@mcdee will wait on your opinion before i merge

I'd be okay with this if the definition of the consensus value is fully defined.  Specifically, we would need to ensure that the value of included attestations is correct.  Attestations within an aggregate that have already been included in prior blocks in the chain are valued at 0, so knowledge of the past 64 slots' on-chain attestations are required to calculate this accurately.
I do not know if all of the the current block packing algorithms take this into account, so I would like to hear a confirmation from client teams that they can provide this value accurately before we make it a mandatory requirement for the endpoint to provide.  I'd also like to see the wording tightened up to reflect this.

I'd be okay with this if the definition of the consensus value is fully defined.  Specifically, we would need to ensure that the value of included attestations is correct.  Attestations within an aggregate that have already been included in prior blocks in the chain are valued at 0, so knowledge of the past 64 slots' on-chain attestations are required to calculate this accurately.
I do not know if all of the the current block packing algorithms take this into account, so I would like to hear a confirmation from client teams that they can provide this value accurately before we make it a mandatory requirement for the endpoint to provide.  I'd also like to see the wording tightened up to reflect this.

of the the current block packing algorithms take this into account

computing the value of a block is separate from the packing process - it's something you do after you've packed your block using the same spec functions that are used to compute the reward in the state transition.
Smart clients might want to take into account history and profit during packing process, but this is not a requirement / orthogonal to providing the value - afair, the eth value is mostly useful for comparing recent attestations from a different fork vs old attestations from the canonical fork but this point of view might be out of date.
We don't have any requirements or tests that clients pack optimal blocks, in part because doing so is computationally expensive in edge cases, but also because the packing depends on client options (like subscribe-all-subnets).
As @michaelsproul points out, today we have the undesireable combination of clients packing suboptimal blocks and vc:s picking these poorly packed blocks when better ones exist locally in a multi-client-bn setup.

Is this correct?

Presumably yes ;) I haven't followed the rewards api closely but it seems like a reasonable interpretation - I can't imagine why it wouldn't be the same.

As a follower of the v3 API and rewards API I agree we should define the consensus block value as equal to the total returned by the rewards API

computing the value of a block is separate from the packing process

Yeah, the point was that if the packing process isn't aware of the prior history of the chain then it will equally fail to be able to calculate the value of the block for this change to the API (or will need to be written separately, which could be a chunk of work for client teams).

As a follower of the v3 API and rewards API I agree we should define the consensus block value as equal to the total returned by the rewards API

Having the equality between the two API endpoints works, and avoids having to define the value explicitly in the API doc.

calculate the value of the block for this change to the API

Well.. not really, as I pointed out above: the packing can be done independently of the final block and its eth value - packing is the process of selecting attestations for the block - it is unaware of anything else that goes into the block and can be done purely based on heuristics, bitset coverage and other tricks. The vast majority of profitable attestations are not in the history: they're from the previous slot and history doesn't matter for them - a better packing algorithm might look deeper and do more tricks, but critically, it doesn't need to know anything about eth value (which depends on validator counts and a bunch of other things).
Computing the value of the block is done while applying the block to the state in order to compute the new state root - it's done after the attestations have been chosen and after the other components of the block are selected (slashings, exits and so on). It is completely independent of packing. This is where history must be used (in the form of a prestate for the block), because it also is needed for other things.

Why do we set the following headers when the response object also has these values?

Eth-Execution-Payload-Blinded
Eth-Execution-Payload-Value
Eth-Consensus-Payload-Value

Why do we set the following headers when the response object also has these values?

allows obtaining the information without requiring partial parsing of the JSON
available for SSZ responses, where the response object does not contain this data


grammar: may be

maybe be -- does not really make sense, it should almost always be
written as simply: may be.

Hi @jsoref, I'm your friendly neighborhood Microsoft Pull Request Bot (You can call me MSBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by Microsoft and real humans are currently evaluating your PR.
TTYL, MSBOT;

LGTM


Remove password.secret file

When first setting up secret encryption we wanted to avoid the annoyance of manually unlocking fedimintd after each restart, so we saved the password right next to the encrypted config file for the time being. We are at a point now where we should revisit this decision.
I propose removing password.secret and instead having two modes of injecting the password:

Via an environment variable: this maintains the status quo of allowing unattended restarts. In environments where a env var can be populated from a secure enclave that might just be good enough.
By logging in to the admin UI: this would require a guardian to enter their password after each restart of their server. This would allow to keep secrets in memory only.

@dpc mentions passing secrets via env is not the best option. Having a password file in ram disk might be better, so we could use an env var to point to that file.


Adding helper method to return a collection name given a Model class

API Helper Method to return a collection name given a Model class (or class name)

@carbonin can you give this a try for central admin, usage is simply Api.model_to_collection(klass)  (also takes klass.name).
/cc @imtayadeway

LGTM :+1:
Thanks @abellotti

@abellotti just occurred to me, what's the use case for this method? It seems to indicate a leaky abstraction. If I have a model name, and I have access to that model, why do I need to go through the API?

@imtayadeway This was specifically for the central admin use case.
I want to generate a remote API request for a call that was issued locally. So someone called process_tasks on some model with an id that is in a remote region and I need to translate that method and model into a collection and action for the API call.

@imtayadeway updated as discussed, also added specs.

@abellotti @carbonin does https://github.com/ManageIQ/manageiq/blob/master/app/controllers/api/base_controller/collection_config.rb#L73 obviate the need for this?

It would if it wasn't in a controller @imtayadeway
I'm looking at using this stuff here https://github.com/ManageIQ/manageiq/blob/master/app/models/mixins/process_tasks_mixin.rb#L94

@carbonin I'm working on a PR to pull that out of the controller code and under Api - would that suffice?

@imtayadeway yeah, I think so. It looks nearly identical to me ...

@carbonin @abellotti WIP here, showing the method in question: https://github.com/ManageIQ/manageiq/pull/11237/files#diff-df9f685300ad9b862f999a4936d919e4R16


add modern cmake and a proper install

added proper modern cmake for this static library
moved source and header into include and src folder (more conform for the install)
Inlcude paths look now like crossguid/guid.hpp
cmake properly installs the project, writing project config files for use with find_package

install
├── include
│   ├── crossguid
│   │   └── guid.hpp
│   └── include
│       └── crossguid
│           └── guid.hpp
├── lib
│   └── libcrossguid.a
└── share
    └── crossguid
        ├── LICENSE
        ├── README.md
        └── cmake
            ├── crossguid-config-release.cmake
            └── crossguid-config.cmake

Output of library is libcrossguid.a not libxg.a because its too short for clashing with potential others.
namespace is still xg
Simple Travis CI is setup at https://travis-ci.org/gabyx/crossguid (android is not yet tested, maybe you can setup this procedure)
Readme is adapted to the new settings

These changes ressemble a proper modern cmake setup and are very important for people wanting to use your library.
The PR #20 should be considered integrating into these changes too, but are orthogonal to these, meaning these changes are by far more elaborate and proper.
Supporting for ExternalProjectAdd can be done as well

From PR #20

I am going to read over this though and look at more cmake docs. If it enables ExternalProject_Add then it's probably a good change. I just can't help but cringe when more and more lines of cmake code get added. It's just a tiny lib with one header file and one source file and somehow the cmake config file has more complexity than the library itself.

this is true, but the library eventhough guite uesfull, is hard to use properly when there is not install of the library, which only make the library able to use its source and headers directly.
With these changes, you can properly install the library, and of course you still can use it as a submodule and then


Segmentation Fault on v0.4.6

Describe the bug
When attempting to run Supercell-WX the app crashes with a segmentation fault and the core is dumped. The application did not crash with the previous version. (v0.4.5)
To Reproduce
Steps to reproduce the behavior:

Execute program by changing directory to bin/ and running ./supercell-wx.  The AppImage also crashes on my machine.

Expected behavior
The app should open and not crash.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):

OS: Linux Mint 21.3 Cinnamon 64-bit
Graphics hardware: Intel Corporation TigerLake-H GT1 [UHD Graphics]
Graphics driver: n/a
Memory usage: [e.g., 16 GB, 67% used]
Network speed and latency: Download: 932.77 Mbps, Upload: 929.94 Mbps, Ping: 21.87ms.
Version: 0.4.6

Debug Log (if applicable):
[2024-11-28 11:58:22.991] [6734] [info] [scwx::main] Supercell Wx v0.4.6 (5dd30131e3)
[2024-11-28 11:58:23.030] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.030] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.036] [6734] [info] [scwx::qt::manager::log_manager] Removing old log file: supercell-wx.6942.log
[2024-11-28 11:58:23.036] [6734] [info] [scwx::qt::manager::log_manager] Removing old log file: supercell-wx.6841.log
[2024-11-28 11:58:23.036] [6734] [info] [scwx::qt::manager::log_manager] Removing old log file: supercell-wx.5415.log
[2024-11-28 11:58:23.036] [6734] [info] [scwx::qt::manager::log_manager] Removing old log file: supercell-wx.5336.log
[2024-11-28 11:58:23.036] [6734] [info] [scwx::qt::config::radar_site] Loading radar sites from ":/res/config/radar_sites.json"...
[2024-11-28 11:58:23.038] [6734] [debug] [scwx::qt::config::county_database] Loading database
[2024-11-28 11:58:23.044] [6734] [info] [scwx::qt::manager::settings_manager] Loading settings
[2024-11-28 11:58:23.045] [6734] [debug] [scwx::qt::manager::settings_manager] Validating settings
[2024-11-28 11:58:23.049] [6734] [debug] [scwx::qt::manager::font_manager] LoadFontResource: Alte DIN 1451 Mittelschrift-12:Regular
[2024-11-28 11:58:23.049] [6734] [debug] [scwx::qt::manager::font_manager] Found matching font: Alte DIN 1451 Mittelschrift:Regular (/home/jimmy/.cache/Supercell Wx/fonts/din1451alt.ttf)
[2024-11-28 11:58:23.049] [6734] [debug] [scwx::qt::types::imgui_font] Creating Font: din1451alt.ttf:16
[2024-11-28 11:58:23.052] [6734] [debug] [scwx::qt::manager::font_manager] LoadFontResource: Inconsolata-10.5:Regular
[2024-11-28 11:58:23.052] [6734] [debug] [scwx::qt::manager::font_manager] Found matching font: Inconsolata:Regular (/home/jimmy/.cache/Supercell Wx/fonts/Inconsolata-Regular.ttf)
[2024-11-28 11:58:23.052] [6734] [debug] [scwx::qt::types::imgui_font] Creating Font: Inconsolata-Regular.ttf:14
[2024-11-28 11:58:23.052] [6734] [debug] [scwx::qt::manager::font_manager] LoadFontResource: Roboto Flex-9:Regular
[2024-11-28 11:58:23.052] [6734] [debug] [scwx::qt::manager::font_manager] Found matching font: Roboto Flex:Regular (/home/jimmy/.cache/Supercell Wx/fonts/RobotoFlex-Regular.ttf)
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::types::imgui_font] Creating Font: RobotoFlex-Regular.ttf:12
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/icons/flaticon/cardinal-point-24.png
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/icons/flaticon/compass-24.png
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/images/crosshairs-24.png
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/images/cursor-17.png
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/images/dot-3.png
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/images/location-marker.svg
[2024-11-28 11:58:23.053] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/images/mapbox-logo.svg
[2024-11-28 11:58:23.054] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/images/maptiler-logo.svg
[2024-11-28 11:58:23.054] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/lines/default-1x7.png
[2024-11-28 11:58:23.054] [6734] [debug] [scwx::qt::util::texture_atlas] Loading image: :/res/textures/lines/test-pattern.png
[2024-11-28 11:58:23.054] [6734] [debug] [scwx::qt::util::texture_atlas] Building 2048x2048 texture atlas
[2024-11-28 11:58:23.059] [6734] [debug] [scwx::qt::util::texture_atlas] Texture atlas built in 0.000000s
[2024-11-28 11:58:23.069] [6734] [debug] [scwx::qt::manager::media_manager] Audio device: Built-in Audio Analog Stereo
[2024-11-28 11:58:23.069] [6734] [debug] [scwx::qt::manager::thread_manager] Creating thread: position_manager
[2024-11-28 11:58:23.070] [6734] [debug] [scwx::qt::manager::position_manager] Available sources: geoclue2, nmea
[2024-11-28 11:58:23.070] [6772] [debug] [scwx::qt::manager::position_manager] Using position source: geoclue2
[2024-11-28 11:58:23.070] [6772] [warning] [qt] [qt.positioning.geoclue2] Already stopped
[2024-11-28 11:58:23.071] [6734] [info] [scwx::qt::model::layer_model] Reading layer settings
[2024-11-28 11:58:23.071] [6734] [info] [scwx::qt::model::radar_site_model] Reading presets
[2024-11-28 11:58:23.087] [6734] [debug] [scwx::qt::map::alert_layer] Initializing handler
[2024-11-28 11:58:23.089] [6734] [debug] [scwx::qt::manager::radar_product_manager] UpdateAvailableProducts()
[2024-11-28 11:58:23.089] [6782] [debug] [scwx::provider::aws_level3_data_provider] ListProducts()
[2024-11-28 11:58:23.090] [6781] [debug] [scwx::provider::aws_level3_data_provider] ListProducts()
[2024-11-28 11:58:23.169] [6734] [debug] [scwx::qt::main::main_window] Selecting radar product: L3, N0B
[2024-11-28 11:58:23.172] [6778] [debug] [scwx::qt::view::level3_product_view] UpdateColorTable()
[2024-11-28 11:58:23.172] [6778] [debug] [scwx::qt::view::level3_radial_view] ComputeSweep()
[2024-11-28 11:58:23.172] [6778] [debug] [scwx::qt::view::level3_radial_view] Level 3 data not found
[2024-11-28 11:58:23.172] [6783] [debug] [scwx::provider::aws_level3_data_provider] ListProducts()
[2024-11-28 11:58:23.172] [6734] [debug] [scwx::qt::manager::timeline_manager] SetRadarSite: KLSX
[2024-11-28 11:58:23.172] [6734] [debug] [scwx::qt::manager::timeline_manager] Time updated: Live
[2024-11-28 11:58:23.172] [6734] [debug] [scwx::qt::manager::alert_manager] SetRadarSite: KLSX
[2024-11-28 11:58:23.172] [6734] [debug] [scwx::qt::manager::placefile_manager] SetRadarSite: KLSX
[2024-11-28 11:58:23.172] [6734] [debug] [scwx::qt::main::application] Application initialization finished
[2024-11-28 11:58:23.172] [6769] [info] [scwx::qt::manager::update_manager] Checking for updates
[2024-11-28 11:58:23.172] [6774] [info] [scwx::qt::manager::placefile_manager] Reading placefile settings
[2024-11-28 11:58:23.172] [6775] [info] [scwx::qt::manager::marker_manager] Reading location marker settings
[2024-11-28 11:58:23.172] [6790] [debug] [scwx::qt::view::level3_radial_view] ComputeSweep()
[2024-11-28 11:58:23.172] [6773] [debug] [scwx::qt::manager::text_event_manager] Start Refresh
[2024-11-28 11:58:23.172] [6790] [debug] [scwx::qt::view::level3_radial_view] Level 3 data not found
[2024-11-28 11:58:23.174] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.174] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.175] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.175] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.178] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.178] [6734] [warning] [qt] [default] Unrecognized OpenGL version
[2024-11-28 11:58:23.178] [6734] [debug] [scwx::qt::map::map_widget] initializeGL()
Segmentation fault (core dumped)

Additional context
I'm assuming it has something to do with the "Unrecognized OpenGL version" message, but I'm not really sure.
Thanks for looking into this!

Thanks, I'll take a look! If you have a core dump that will help, but I think I might be able to reproduce this.

Odd. I am not having this issue on any of my Linux machines. (Arch, Debian, or Mint Cinnamon 22)
You could check your OpenGL version with the command below. It should be >= 3.3.
glxinfo | grep "version"
I have had issues with initializeGL segfaulting if OpenGL versions 3.3 is not supported (Raspberry Pi), so Qt not recognizing the OpenGL version could be causing this.

I'm reproducing this on my Ubuntu 22.04 VM, but not my Ubuntu 24.04 VM.  Both are showing a supported OpenGL version of 4.3.
server glx version string: 1.4
client glx version string: 1.4
GLX version: 1.4
    Max core profile version: 4.3
    Max compat profile version: 4.3
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.1
OpenGL core profile version string: 4.3 (Core Profile) Mesa 23.2.1-1ubuntu3.1~22.04.2
OpenGL core profile shading language version string: 4.30
OpenGL version string: 4.3 (Compatibility Profile) Mesa 23.2.1-1ubuntu3.1~22.04.2
OpenGL shading language version string: 4.30
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 23.2.1-1ubuntu3.1~22.04.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
    GL_EXT_separate_shader_objects, GL_EXT_shader_implicit_conversions,

My first instinct is a difference is something different between Qt 6.7.1 and 6.8.0.  Little changed in the way of shaders this release, and OpenGL 3.3 should still be the minimum version.

If I build the release in my VM, it works (using Qt 6.8.0). I'll try a clean build, but I'm also suspicious of the GitHub runners.

I have attached a core file. Thanks!
core.tar.gz

Update: #308 seems to fix this. I have tested on Ubuntu 22.04, Linux Mint 21.3 and 22, and Arch Linux. Dan (dpaulat) said he would package that and another fix for a new release when he has time. Thanks for reporting.

v0.4.7 has been set to pre-release with Linux artifacts available:
https://github.com/dpaulat/supercell-wx/releases/tag/v0.4.7-release
Once Windows is finished building and uploaded, I'll mark this as the latest release.

Verified that issue is fixed on 0.4.7.
Thanks so much!!

Great! Glad it's working once again!!


python/its-status: colect all cellular KPIs

Currently, we only collect those KPIs associated with the current access technology,
with the assumption that there was a reciprocal relation between the two, i.e. that for
a given access technology currently in use, only the corresponding signal KPIs would
be reported.
However, when connected on a 5G-NSA network, the access technology is 4G (LTE), but
the modem is also connected on the 5G network, and thus the signal KPIs for that are
also available, and should be reported.

@tigroo @mathieu1fb FYI

Agreed. In that case, I will display "5G-NSA" when both 4G and 5G KPIs are collected, and "5G-SA" when only 5G KPIs are present.

display "5G-NSA" when both 4G and 5G KPIs are collected, and "5G-SA" when only 5G KPIs are present.

That was the idea, indeed. Except there will be other corner cases.
For example, until now, when the access-technology is one of HSDPA or HSUPA, we fake it to be UMTS (so umts is what gets reported as cellular[].connection.technology), and we report the UMTS signal KPIs.
From now on (i.e. after this issue is fixed), we'll report HSDPA and HSUPA as-is, without mangling (i.e. hsdpa or hsupa will get reported as cellular[].connection.technology), but there are no corresponding signal KPIs, but the UMTS ones. So, similar to LTE vs. 5G-NSA vs. 5G-SA, this is another corner case.
And there might be other imilar situations... Meh... :-(


How to access pre-defined table?

I intend to insert or replace a huge of entities, and each of those entities formed as a nested object. Just only access other meta-table many times to finish one operation. If I can access sqlite_sequence, I can finish it by reading seq instead of those redundancies. But I have tried .moor and its failure while executing build_runner.
sql.moor
currentSeq: SELECT seq FROM sqlite_sequence WHERE name = :table;
nextSeq: SELECT seq + 1 AS seq FROM sqlite_sequence WHERE name = :table;

error message:
[WARNING] moor_generator:moor_generator on lib/feat_v0.0.2/Component/RTC/data_moor/data.dart:
There were some errors while running moor_generator on package:enjoy_flutter/feat_v0.0.2/Component/RTC/data_moor/data.dart:
[WARNING] moor_generator:moor_generator on lib/feat_v0.0.2/Component/RTC/data_moor/data.dart:
line 1, column 29: Could not find sqlite_sequence. Available are:
  ╷
1 │ currentSeq: SELECT seq FROM sqlite_sequence WHERE name = :table;
  │                             ^^^^^^^^^^^^^^^
  ╵
[WARNING] moor_generator:moor_generator on lib/feat_v0.0.2/Component/RTC/data_moor/data.dart:
line 2, column 37: Could not find sqlite_sequence. Available are:
  ╷
2 │ nextSeq: SELECT seq + 1 AS seq FROM sqlite_sequence WHERE name = :table;
  │                                     ^^^^^^^^^^^^^^^
  ╵

We should make the structure of internal sqlite tables (sqlite_master, sqlite_sequence, maybe also the stat tables) available to the parser so that it doesn't complain about tables not existing.
In the meantime, you could use a manual custom select statement:
@UseMoor(...)
class MyDatabase extends _$MyDatabase {
  // ...
  Future<int> currentSeq(String table) {
    return customSelectQuery(
      'SELECT seq FROM sqlite_sequence WHERE name = :table;',
      variables: [Variable.withString(table)],
    )
    .map((row) => row.readInt('seq'))
    .getSingle();
  }
}

That reminds me I’m also using a custom select when I want to use the rowid aliases - typically as a stable ORDER BY for consistent LIMITing on a composite primary key table.

Phew, supporting rowid aliases was more complicated than I expected (mostly name resolving when used as a result column), I hope I didn't miss anything.
Anyway, the sqlite_master and sqlite_sequence tables and rowid aliases will be available in the next moor version.

Thinks for you. I got it.


register

@JuliaRegistrator register

Error while trying to register: "Tag with name v0.5.2 already exists and points to a different commit"

Error while trying to register: Action not recognized: help

@JuliaRegistrator help

Error while trying to register: Action not recognized: help

@JuliaRegistrator close

Error while trying to register: Action not recognized: close

Error while trying to register: Action not recognized: close

@JuliaRegistrator register

Registration pull request created: JuliaRegistries/General/53451
After the above pull request is merged, it is recommended that a tag is created on this repository for the registered package version.
This will be done automatically if the Julia TagBot GitHub Action is installed, or can be done manually through the github interface, or via:
git tag -a v0.5.2 -m "<description of version>" 0b6ddcf7fec7c82bd08b85d6e1f3195ec7379c2c
git push origin v0.5.2

Also, note the warning: This looks like a new registration that registers version 0.5.2.
Ideally, you should register an initial release with 0.0.1, 0.1.0 or 1.0.0 version numbers
This can be safely ignored. However, if you want to fix this you can do so. Call register() again after making the fix. This will update the Pull request.

@JuliaRegistrator register


Sometimes validations are plotted in the wrong order

Severity

[ ] Critical/Blocker (select if the issue makes the application unusable or causes serious data loss)
[ ] High (select if the issue affects a major feature and there is no workaround or the available workaround is very complex)
[x] Medium (select if the issue affects a minor feature or affects a major feature but has an easy enough workaround to not cause any major inconvenience)
[] Low (select if the issue doesn't significantly affect the user experience, like minor visual bugs)

Describe the bug
Sometimes the validation boxplot "folds upon itself" - validation are plotted in the wrong order on the x-axis. Probably there is a problem sorting the validations on timestamp or so.
Expected behavior
A plot where all validation appears i chronological order.
Screenshots

Contact Details
An e-mail address in case we need to contact you for further details regarding this issue.

This is fixed in develop.

@ahellander solved maybe you need to close this issue

Will be closed automatically when we merge in master next time.