Collect dynamic number of metrics from artifact/output parameter

I use Argo Workflows to run batch jobs. Most of these batch jobs share a common docker image but each job has a different set of custom metrics. At first, I tested the custom metrics by writing an individual text file for each metric and then have a static definition of that metric in my template. And to be clear, this works as it should. However, it would be a lot easier if I could define it dynamically in a way that e.g. one file with a JSON array of metrics (name, labels, value) is transformed in a set of Prometheus metrics.
Cases I was (partially) able to implement:

Define metrics one by and use an output parameter as the value for the metric as properly describe in the documentation (lots of work and maintenance for creating new metrics or updating old ones)

...
   templates:
   - name: clean-up-clean-layer-job
     metrics:
       prometheus:
         - name: testing_gauge       # Metric name (will be prepended with "argo_workflows_")
           help: "test metric"
           labels:                           # Labels are optional. Avoid cardinality explosion.
             - key: name
               value: model_a
           gauge:                            # The metric type. Available are "gauge", "histogram", and "counter".
             value: "{{outputs.parameters.first_test}}"
     inputs:
       parameters: [{name: job, value: cleanup-clean-layer}]
     outputs:
       parameters:
       - name: first_test
         valueFrom:
           default: "3"
           path: /home/output/metrics/test.txt
...

Generate metric values with a script and populate the prometheus metrics dynamically in a individual step

...
 templates:
  - name: metric-collection-workflow
    steps:
    - - name: generate-values
        template: generate
    - - name: collect-metrics
        template: collect-metrics-template
        arguments:
          parameters:
          - name: metric
            value: "{{item}}"
        withParam: "{{steps.generate-artifact.outputs.result}}"
  - name: generate
    script:
      image: python:alpine3.6
      command: [python]
      source: |
        import json
        import sys
        json.dump([{'name':i } for i in range(20, 22)], sys.stdout)
  - name: collect-metrics-template
    metrics:
      prometheus:
        - name: "sample_metric"    # Metric name (will be prepended with "argo_workflows_")
          help: "test metric"
          gauge:                            # The metric type. Available are "gauge", "histogram", and "counter".
            value: "{{inputs.parameters.metric}}"
    inputs:
      parameters:
      - name: metric
    container:
      image: alpine:latest
      command: [sh, -c]
      args: ["echo metric value is {{inputs.parameters.metric}} seconds; echo done"]
...

The problem with this approach, is first of all that it creates a sepearte step and thus needs resources. More importantly, the input parameter is a single value and not a list of parameters like 'metric_name', 'metric_value', 'metric_type', 'metric_labels'... and on top of that it seems that dynamic metric names are also not allowed: _

"Metric names must contain alphanumeric characters, '_', or ':'"
_
So this means, that all the steps update the same metric which is of course not what I try to achieve.

I am still quite new to Argo so I am not always aware of the possibilities so the main question is whether this dynamic declaration of custom metrics is possible and if yes, how?
Thanks in advance for your help

Could i know the solution ? thanks


Suggestion: Testing guidance

I see there is a config for jest an some mention of coverage, but I don't see anything on testing in the docs.
I think it'd be nice to see any of the following:

A testing section in the docs
An example test, so npm test does something
Coverage turned on by default
Maybe some more complex test examples which touch on graphql component testing etc

i can't make tests work, it unable to import "scss" files.
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){@import "src/styles/base.scss";
                                                                                ^
   SyntaxError: Invalid or unexpected token

     at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:305:17)
     at Object.<anonymous> (src/components/sections/header.jsx:7:15)
     at Object.<anonymous> (src/__tests__/header.test.jsx:3:15)

@istinspring You can get around that issue with this package: https://www.npmjs.com/package/jest-css-modules
The github page suggests that you might not need it however I wasn't able to get their alternative method to work.

@jonoirwinrsa i resolved it via proxy object.
{
  moduleNameMapper: {'^.+\\.(css|less|scss)$': 'identity-obj-proxy',
  }
}

in jest.config.js

😮 thanks - that works better.. Keeps the classnames in-tact

There's currently no test runner in the new 3.0.0 kit, but adding one will be fairly trivial when I've settled on an option. There's a lot of changes since the last ReactQL version, so I ripped it out for speed. Feel free to add whichever you like best.


Improve product image handling

There's currently a few issues with the way the dashboard handles product images.
https://github.com/tangentlabs/django-oscar/blob/master/oscar/templates/oscar/partials/image_input_widget.html

[ ] If no image is set, an empty <img> is rendered. It's not visible as it's overlaid by both a button and the  field, but at least in Chrome changes the mouse cursor
[x] The inline(!) javascript uses relative addressing via .next() to hide or show the upload button
[ ] Semantically, the button is never used, and merely for display purposes. Maybe one could remove it, and instead have an always visible <img> which looks something like this

[ ] As everything else has an immediate reaction, it would be nice if deleting pictures would be instant as well. Or at least the image becoming grayed out when clicking 'Delete'
[x] The input field is, at least in Chrome, 100 px to the right. That causes the mouse cursor to not display as expected in the left half of the area. This is caused by absolute positioning and some not widely supported transforming: https://github.com/tangentlabs/django-oscar/blob/master/oscar/static/oscar/less/dashboard.less#L771
[ ] It would be nice if images could be dragged & dropped. Seems easy enough: http://djangosnippets.org/snippets/1053/
[ ] ImageField validation errors need looking into, as per @mbertheau's comment below
[ ] Uploaded images aren't saved if other validation fails, as reported on the mailing list and in https://github.com/tangentlabs/django-oscar/pull/1126
[ ] Allow associating images with child products (as mentioned in https://github.com/tangentlabs/django-oscar/issues/675#issuecomment-48340506)

Possible enhancements:

Allow image cropping with e.g. django-image-cropping

I'd like to integrate https://github.com/flowjs/flow.js. This will fix the following on your list:

No Image is set, empty image is shown
Semantically, the button is never used, and merely for display purposes. Maybe one could remove it, and instead have an always visible  which looks something like this
It would be nice if images could be dragged & dropped

And add the ability to drag and drop folders (which is why I need to integrate this) so that a user no longer has to save 4 images and wait for 4 more input boxes to appear.
ImageField error validation, deletion and drag and drop for ordering can be explored.
But I'm asking here to see whether this would be pulled in or if you guys have another direction you'd rather take.


[QUESTION]: multipath for the Dell CSI Operator 1.10 (CSI PowerMax 2.4)

How can the Team help you today?
Hello Team,
We are running  Dell CSI Operator 1.10 (CSI PowerMax 2.4) on openshift 4.10.
Can you please let me know if there are any vendor recommended multipath configurations?
This has hit us couple of times in production and would like to check your recommendations.

Hi @soudamsugit,
A sample MachineConfig can be found in the documentation here : https://dell.github.io/csm-docs/docs/deployment/csmoperator/drivers/powermax/#linux-multipathing-requirements
Can you share more details on the issue you faced ?

As the question is answered, closing it


Replace the multi bar chart reports with dashlet and chart.js

Replace the multi bar chart reports with dashlet and chart.js across the app.
Following are the reports having multibar chart

NISHTHA - module name: teacher-training

[x] District wise Status
[x] Course wise Status

Courses - module name: courses
- [ ] User Progress

Completed


Support for automatically switching a database connection to read-only (e.g. after idle time)

Is your feature request related to a problem? Please describe.
First of all: Kudos to this project and its developers! I am a big fan and user of the application and really love it!
I run dbeaver with a couple of connections to our dev/stage/prod databases - with read-write connections. By default i always keep the "Read-only connection" toggle checked - a feature i find quite useful. Only when i need to change some data (i am aware that fiddling around in a prod db should be avoided - but sometimes there is no other way) i uncheck the read-only flag - and turn it back on after i am done with my db changes. However this must be done manually and must not be forgotten (which happened a couple of times).
To improve security here it would be nice if dbeaver could automatically turn on read-only mode for me (e.g. after some time or after disconnect)
Describe the solution you'd like
It would be nice if dbeaver could automatically turn on read-only mode for me. E.g.:

after some (configurable) time or
after disconnect or
at program exit

Describe alternatives you've considered
Currently i am turning on read-only mode manually - but this might be forgotten
Additional context
none

Thank you for sharing your use case and idea


checkpoint & config file

Error ... This checkpoints is not found in config file. Update config file via internet! For more details, visit our documentation: https://github.com/wladradchenko/wunjo.wladradchenko.ru/wiki
why dont you make the checkpoint and models available for manual download

You can find a video how download manually on YouTube channel or documentation or telegram smart bot.


fix bug with voronelf_alg 🐛

There were a couple lines of code that caused improper voxel assignment when using the voronelf algorithm.

closed as duplicate of #588


iso-codes: 3.56 -> 3.74

Motivation for this change
Update
Things done

[x] Tested using sandboxing
(nix.useSandbox on NixOS,
or option build-use-sandbox in nix.conf
on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] Linux

[] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

Did not test through nox-review, most of the mass rebuild is for gnome, in which I don't use


[updatecli] Helm Chart-related manifests: switch targets from (tedious) file regexs to (native) YAML queries

What feature do you want to see added?
This repository describes Kubernetes cluster expected applications using helmfile releases.
The YAML file used to describe these "helm releases" uses a list of object as you can see in https://github.com/jenkins-infra/kubernetes-management/blob/main/clusters/publick8s.yaml
We are tracking the helm chart versions with a set of updatecli manifests in https://github.com/jenkins-infra/kubernetes-management/tree/main/updatecli/updatecli.d/charts which role is to detects a new chart versions and open a PR with new versions in the (aforementioned) "helm releases YAML" file.
Problem: due to the inherent fragility of using numeric index (can be reordered, breaking the updatecli manifests), we switched to updatecli targets of kind "file" which uses a regex to match patterns and proceed to replacement such as https://github.com/jenkins-infra/kubernetes-management/blob/f38be834e33b1790abd3b7f8cf4a0c4e1a48af92/updatecli/updatecli.d/charts/accountapp.yaml#L30-L31.
=> this is hard and tedious to maintain, and prone to error.
Proposed solution: updatecli did now support a yaml path engine in its YAML target kind. It allows using YAML path queries to perform selection of the list object based on attribute filters which is way better.
Working example: https://github.com/jenkins-infra/kubernetes-management/blob/main/updatecli/updatecli.d/charts/artifact-caching-proxy.yaml
=> we want to update all manifest tracking Helm Charts versions to use YAML path targets instead of file targets, following the working example
Upstream changes
No response

Closed by https://github.com/jenkins-infra/kubernetes-management/pull/5666


Complete the easy to use Swift based Redis API

 Issue by KALLNER
Friday Jan 08, 2016 at 11:57 GMT
Originally opened as https://github.ibm.com/ibmswift/Phoenix/issues/22

Add easy to use APIs for Redis List, Set, Sorted set, Transactional List, Transactional Set, and Transactional Sorted set  operations.

Is there any value in maintaining our own Redis driver, with respect to RedBird?  If we do not offer any specific competitive advantage or revenue potential, then we shouldn't roll our own.  Let's utilize the effort of others.

Currently working on this: Can create, read, update, delete items in Redis- but still some issues getting all the test cases passing:
https://github.com/IBM-Swift/kitura-todolist-redis/

The advantage of Kitura-redis of RedBird is type safety and the ability to send binary data. Rather than simply passing in strings, Kitura-redis has a set of functions for most of the Redis API. These functions all take the appropriate types and have callbacks with appropriate types.
There once was an advantage to RedBird over Kitura-redis, in that RedBird is pure Swift and Kitura-redis wasn't.
This is no longer the case. Kitura-redis is now pure Swift as well. The old CHiredis dependency is no longer used (as of yesterday in the develop branch)

Closing - Reopen as needed.


Testing Istio reconciler changes

Description
Implement pipelines testing istio reconciler changes along with main reconciler changes. Pipeline should use reconciler built from sources, install istio along with other pre-req and trigger istio component tests. Pipeline should be mandatory and be triggered before merging PR to main as well as after merging.
AC

[ ] istio component test
[ ] pre main mandatory pipeline using reconciler sources to install latest kyma 2 release istio component and it's pre-req and running istio component tests
[ ] post main mandatory pipeline using reconciler sources to install latest kyma 2 release istio component and it's pre-req and running istio component tests
[ ] pre main mandatory pipeline using reconciler sources to install kyma main istio component and it's pre-req and running istio component tests
[ ] post main mandatory pipeline using reconciler sources to install kyma main istio component and it's pre-req and running istio component tests
[ ] pipelines are triggered on updates in Istio Reconciler codebase and Reconciler Dockerfile

Reasons
It is possible to introduce bugs which are discovered either in KCP or in kyma cli.
Attachments

One remark: add dedicated VirtualService that exposes IngressGateway under healthz.<domain>. If it returns HTTP status 200 then OK, any other response is considered as failure.
For input please have a look at VirtualService available in Istio-resources component.


Show the total number of issues on /projects/contribute page

Implement it the same way it's done for /projects (see https://github.com/OWASP/Nest/pull/11)
The search bar placeholder text should be Search through {issuesCount} issues to solve

/assign


Flask routes

Creation of the Flask routes.

Implementation of Flask routes as a Dash callback in commit 573c659


Auditing doesn't work on entities in Datastore when running through DatastoreTemplate.performTransaction()

When using DatastoreTemplate.performTransaction() with spring-cloud-gcp-data-datastore 1.2.6.RELEASE, auditing doesn't work for entities.
That's because the new DatastoreTemplate instance created in performTransaction() does not have the ApplicationEventPublisher of the original one, which is the mechanism by which the AuditingHandler eventually gets called to set the auditing properties.
I've added a test to DatastoreTemplateAuditingTests in my fork which demonstrates the problem.
I also have a simple fix ready, if it's actually a bug and you want a PR.

Hi @fpavageau! Thanks for a detailed description, test, and fix!
We'll be happy to accept the fix, if you can open a PR!

OK, I've squashed the test commit with the fix commit and opened the PR.


Unify the user and operator Grafana deployments

How to categorize this PR?

/area monitoring
/kind enhancement
What this PR does / why we need it:
Previously, Gardener used to manage two Grafana deployments in the control plane of a shoot cluster. One for shoot owners and another for Gardener operators. The shoot owner Grafana only had a subset of the functions (dashboards and Grafana features) that the Gardener operator's Grafana had. With this PR, there will be only a single Grafana deployment in the control plane and both shoot owners and Gardener operators will have access to the same Grafana instance. So shoot owners will see the same set of dashboards as Gardener operators and will use the same URL to access these: this will improve collaboration between Gardener operators and shoot owners e.g. when they share links to specific dashboards.
Furthermore, shoot owners can access the Explore feature of Grafana to browse observability data in Prometheus and Loki with interactive queries. Shoot owners can also inspect the dashboard panels and tweak the queries or the visualisation. Previously shoot owners could not view the panel definitions of the dashboards. This will help shoot owners to get a better understanding of the visualized metrics and maybe even suggest improvements to better suit their use case. Note that dashboard changes can not be persisted by shoot owners: Grafana is configured to show only the provisioned dashboards and allow only temporary edits in the dashboards.
Furthermore, access to the Prometheus UI was previously restricted to the Gardener operator role. With this PR, shoot owners will have access to the Prometheus UI and API with the same basic auth credentials that they use to access Grafana. The Grafana Explore feature is similar to the interactive queries in the Prometheus UI so with this PR both the Grafana Explore feature and the Prometheus UI can be used by shoot owners to execute ad-hoc queries. It is now also possible for shoot owners to federate all or a subset of the metrics from the control plane Prometheus via the basic authentication protected ingress and to store these metrics in their own monitoring stack. This way shoot owners can control the retention period of these metrics (the 30 days or 15 GB retention of the Gardener managed Prometheus is not configurable), visualize them on their dashboards, add alerting rules and combine these insights with other observations from their workload. Note that previously it was not possible for shoot owners to scrape or federate control plane metrics because the API server is behind a load balancer so instance specific scraping is not possible and the other control plane components are not accessible from the shoot cluster.
Which issue(s) this PR fixes:
Fixes #4800
Special notes for your reviewer:
Supersedes PR #6749 for technical reasons.
cc @rickardsjp

The "deprecated" Grafana resources (i.e. resources with the labels component=grafana, role=users|operators) are deleted at the beginning of the DeploySeedGrafana function. This migration logic should be deleted in a future release.
The ingress prefix for the new grafana will be gu, the same as the user Grafana prefix was before.
The extension contract which allows extensions to contribute dashboards for the operator and the user Grafana instances is not touched by this PR to avoid having to adjust all the extensions that currently use that feature. Dashboards that are contributed as either dashboard_operators or dashboard_users will be provisioned to the single Grafana instance.
Loki in Gardener is configured with two tenants: user and operator. They were used by the user and operator Grafana instances to show only a subset of the logs to shoot owners but all the logs to Gardener operators. The new Grafana uses the operator Loki tenant to show all the logs. The user tenant is no longer used by Grafana. The user Loki tenant shall be removed in a separate PR. cc @vlvasilev, @Kristian-ZH
The dashboard PR that shall be released in the same development cycle: https://github.com/gardener/dashboard/pull/1408

To facilitate code review and to verify the migration process, the second half of the commits of this PR, starting with the "Add a script to export the state relevant for this PR"  commit, explains the effects that this PR introduces in the KinD based local setup of Gardener with a single shoot cluster.
Release note:

Shoot owners have the same access to Grafana and Prometheus as Gardener operators.
- Previously, Gardener used to manage two Grafana deployments in the control plane of a shoot cluster. One for shoot owners and another for Gardener operators. Now there is only a single Grafana deployment in the control plane.
- Previously, the shoot owner Grafana was configured in a fairly restricted way. Shoot owners can now access the Explore feature of Grafana to browse observability data in Prometheus and Loki with interactive queries. They can inspect the definition of dashboard panels and perform temporary edits to facilitate interactive investigations.
- Previously, shoot owners could not access Prometheus that was restricted to Gardener operators. Now shoot owners can access the Prometheus UI as well to facilitate interactive investigations.
- Shoot owners can programmatically access the Prometheus API to federate control plane metrics.

/assign
/retest

/ok-to-test

/ok-to-test

/ok-to-test

/test all
afaik draft PRs are not tested automatically

oh they have been already running, I did not see the icons 😅

/ok-to-test

/ok-to-test

/cc @plkokanov @ialidzhikov @rfranzke because you have already reviewed https://github.com/gardener/gardener/pull/6749, the previous version of this PR.

Regarding @gardener-prow's test results:

@istvanballok: The following tests failed:

Test name
Commit
Details
Required

pull-gardener-apidiff
1fae0e9
link
false

pull-gardener-e2e-kind-ha-multi-zone-upgrade
1fae0e9
link
false

pull-gardener-e2e-kind-ha-single-zone-upgrade
1fae0e9
link
false

 The failed e2e tests are probably not related to this PR: (...)
[It] verifying no downtime while upgrading gardener [post-upgrade]
test/e2e/gardener/upgrade/upgrade.go:107

failed because curling the API server failed more than twice during the multi zone upgrade, see this script, and that fails for all the recent PRs, see the job history.
[It] should able to delete a shoot which was created in previous release [post-upgrade]
test/e2e/gardener/upgrade/upgrade.go:120

failed because the deletion of the shoot that was created in the previous release timed out. The history suggests that this issue is not specific to this PR either.

The API diff is a valid finding and an expected change: the 2 Grafana {Users,Operators} constants were replaced with Grafana (without a suffix).
 github.com/gardener/gardener/pkg/apis/core/v1beta1/constants
  Incompatible changes:
  - DeploymentNameGrafanaOperators: removed
  - DeploymentNameGrafanaUsers: removed
  Compatible changes:
  - DeploymentNameGrafana: added

/unhold

/assign

/assign

>> make generate
make generate needs to be run:
 M pkg/operation/care/checker.go

@istvanballok can you run make format?

/milestone v1.64

The integration tests failed after https://github.com/gardener/gardener/pull/7007#discussion_r1097484895, commit "Improve the ObservabilityComponentsHealthy condition for the transition phase":
   [FAIL] Shoot Care controller tests when operation can be initialized when all control plane deployments for the Shoot are missing [It] should set conditions
  /home/prow/go/src/github.com/gardener/gardener/test/integration/gardenlet/shoot/care/care_test.go:316
  [FAIL] Shoot Care controller tests when operation can be initialized when some control plane deployments for the Shoot are present [It] should set conditions
  /home/prow/go/src/github.com/gardener/gardener/test/integration/gardenlet/shoot/care/care_test.go:384

The reason is that the integration tests used the fake Gardener version 1.2.3 which is too old for the purpose of this change, so I adjusted it now to be 1.64, the next release, so that the health check condition and the actual deployments in the shoot match together: https://github.com/gardener/gardener/pull/7007/commits/edc81d219cf4592351ebb8b557e291760f672dc4#diff-1103b827d7ca384bc709f6e36fc794c0d6cc4eab13cd93d067457626288ac703R185
cc @ialidzhikov @rfranzke if there is a better way to address this.

Regarding pull-gardener-e2e-kind-operator, I'm not sure:
   [FAIL] Garden Tests [It] Create Garden, Rotate Credentials and Delete Garden [Garden, default, credentials-rotation]
  /home/prow/go/src/github.com/gardener/gardener/test/e2e/operator/garden/internal/rotation/certificate_authorities.go:109
  [FAIL] Garden Tests [It] Create, Delete [Garden, default, simple]
  /home/prow/go/src/github.com/gardener/gardener/test/e2e/operator/garden/create_delete.go:53

/test pull-gardener-e2e-kind-operator

/test pull-gardener-e2e-kind

This seems to be a flaky test...
The flaky test issue.
[FAIL] ManagedSeed Tests [It] Create Shoot, Create ManagedSeed, Delete ManagedSeed, Delete Shoot [ManagedSeed, default]
/home/prow/go/src/github.com/gardener/gardener/test/e2e/gardener/managedseed/create_rotate_delete.go:104

In the test, the shoot is upgraded to become a managed seed by deploying a gardenlet there (see logs), but querying for the seed resource returns 404 for 10 minutes. Unfortunately I think the Prow artifacts do not capture the logs of the pods of the shoot that are running inside the machine pod, so it is hard to say why the gardenlet could not start up. It could also be a timing issue, because in a successful test run the seed resource appears (and becomes ready) after 8 minutes and the deadline is 10 minutes.
STEP: Create ManagedSeed @ 02/07/23 12:37:09.158
STEP: Wait for ManagedSeed to be registered @ 02/07/23 12:37:09.172
STEP: Wait for Seed to be ready @ 02/07/23 12:37:14.181
[FAILED] in [It] - /home/prow/go/src/github.com/gardener/gardener/test/e2e/gardener/managedseed/create_rotate_delete.go:104 @ 02/07/23 12:47:14.182
<< Timeline
...
   Message: "seeds.core.gardener.cloud \"e2e-managedseed\" not found"

Let's hope that rerunning the test helps.


[a11y walker] improve extension for use in documents

Using the walker is difficult in everyday documents because the extension does not have good defaults (i.e., dummy walker).

We currently don't have a method to change walkers highlighting etc in
arbitrary documents. The question is: what do we want? Another menu entry,
keys?
On 1 Feb 2016 8:35 a.m., "Peter Krautzberger"<EMAIL_ADDRESS>wrote:

Using the walker is difficult in everyday documents because the extension
does not have good defaults (i.e., dummy walker).
—
Reply to this email directly or view it on GitHub
https://github.com/mathjax/MathJax-RespEq/issues/65.

We currently don't have a method to change walkers highlighting

Is this something that the author should set (to go along with the colors already in use in the page), or is it something the user should set?  Do different visual disabilities require different color combinations?
If it is a user setting, then it will have to be in the menus.  The walker can add menus (and submenus) to control this when it is loaded (so that they are only there when it is in use).
We haven't yet talked about how the walker is to be inserted into the page.  Is that up to the page author, or will the user be able to force that if it is not present?  Being int he third-party repository makes the later a bit more awkward.

Is this something that the author should set (to go along with the colors already in use in the page), or is it something the user should set?

Both (since both control CSS in many AT cases)

Do different visual disabilities require different color combinations?

Yes (color blindness for example).

Is that up to the page author, or will the user be able to force that if it is not present?

I'd say "definitely". But not necessarily through MathJax. As mentioned on #44, one use case is using the walker with mathjax-node output. In other words, I could also imagine a user extension or bookmarklet that loads the walker without touching MathJax itself (even if it's there).

We now have the accessibility menu.
Extension should be lightweight and switched on in context menu.

Fixed.


CQL parsing error: No terminal matches '[' in the current parser context

For OGC API Records work in Testbed 18, we need to leverage the VendorSpecificParameters option, as available from the pyCSW implementation ().
The pyCSW implementation uses the pygeofilter for request parsing:
from pygeofilter.parsers.ecql import parse as parse_ecql
from pygeofilter.parsers.cql2_json import parse as parse_cql2_json

When using the option, the CQL parser throws an exception:
{
  "code": "InvalidParameterValue",
  "description": "CQL parsing error: No terminal matches '[' in the current parser context, at line 1 col 4\n\ndcs[key_challenge] = \"secret\"\n   ^\nExpected one of: \n\t* LESSTHAN\n\t* COMMA\n\t* \"<>\"\n\t* EQUAL\n\t* IS\n\t* IN\n\t* \"DOES-NOT-EXIST\"\n\t* SLASH\n\t* AFTER\n\t* EXISTS\n\t* BEFORE\n\t* BETWEEN\n\t* AND\n\t* NOT\n\t* ILIKE\n\t* \"<=\"\n\t* \">=\"\n\t* RPAR\n\t* DURING\n\t* LPAR\n\t* MINUS\n\t* PLUS\n\t* STAR\n\t* LIKE\n\t* MORETHAN\n\t* OR\n\nPrevious tokens: Token('NAME', 'dcs')\n"
}

You can reproduce the error with the following CURL request:
curl -X GET "https://ogc.demo.secure-dimensions.de/pycsw/collections/metadata%3Amain/items?limit=10&f=json&dcs[key_challenge]=secret" -H "accept: application/geo+json"

Can you isolate just the call in python to parse the query ? From what you
sent there is no way to actually see what is happening.
On Thu, Jul 28, 2022, 4:18 AM Andreas Matheus @.***>
wrote:

For OGC API Records work in Testbed 18, we need to leverage the
VendorSpecificParameters option, as available from the pyCSW implementation
().
The pyCSW implementation uses the pygeofilter for request parsing:
from pygeofilter.parsers.ecql import parse as parse_ecql
from pygeofilter.parsers.cql2_json import parse as parse_cql2_json
When using the option, the CQL parser throws an exception:
{
"code": "InvalidParameterValue",
"description": "CQL parsing error: No terminal matches '[' in the current parser context, at line 1 col 4\n\ndcs[key_challenge] = "secret"\n   ^\nExpected one of: \n\t* LESSTHAN\n\t* COMMA\n\t* "<>"\n\t* EQUAL\n\t* IS\n\t* IN\n\t* "DOES-NOT-EXIST"\n\t* SLASH\n\t* AFTER\n\t* EXISTS\n\t* BEFORE\n\t* BETWEEN\n\t* AND\n\t* NOT\n\t* ILIKE\n\t* "<="\n\t* ">="\n\t* RPAR\n\t* DURING\n\t* LPAR\n\t* MINUS\n\t* PLUS\n\t* STAR\n\t* LIKE\n\t* MORETHAN\n\t* OR\n\nPrevious tokens: Token('NAME', 'dcs')\n"
}
You can reproduce the error with the following CURL request:
curl -X GET "https://ogc.demo.secure-dimensions.de/pycsw/collections/metadata%3Amain/items?limit=10&f=json&dcs[key_challenge]=secret" -H "accept: application/geo+json"
—
Reply to this email directly, view it on GitHub
https://github.com/geopython/pygeofilter/issues/51, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABIHXD6DWPRCQLDBMXIUJ3VWJF65ANCNFSM544Q4BMQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

# =================================================================
#
# Authors: Andreas Matheus<EMAIL_ADDRESS>#
# Copyright (c) 2022 Andreas Matheus
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
# =================================================================

from pygeofilter.parsers.ecql import parse as parse_ecql

if __name__ == '__main__':
    #https://ogc.demo.secure-dimensions.de/pycsw/collections/metadata%3Amain/items?limit=10&filter=&f=json&key_challenge_method=plain&public_key[kid]=LJS&public_key[kty]=RSA&public_key[n]=23ESdb-5g&public_key[e]=AQAB&public_key[use]=enc

    kvp = 'public_key[kid]=LJS&public_key[kty]=RSA&public_key[n]=23ESdb-5g&public_key[e]=AQAB&public_key[use]=enc'
    parse_ecql(kvp)

=>
Traceback (most recent call last):
  File "/opt/pycsw/lib/python3.10/site-packages/lark/lexer.py", line 486, in lex
    token = self.root_lexer.next_token(lexer_state, parser_state)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/lexer.py", line 398, in next_token
    raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
lark.exceptions.UnexpectedCharacters: No terminal matches '[' in the current parser context, at line 1 col 11

public_key[kid]=LJS&public_key[kty]=RSA&public_key
          ^
Expected one of:
	* DOUBLE_QUOTED
	* MINUS
	* DATETIME
	* SEMICOLON
	* FLOAT
	* LESSTHAN
	* COMMA
	* NAME
	* SLASH
	* LPAR
	* "statute miles"
	* "<="
	* "nautical miles"
	* ">="
	* INT
	* DURATION
	* BOOLEAN
	* SINGLE_QUOTED
	* RPAR
	* "DOES-NOT-EXIST"
	* PLUS
	* STAR
	* MORETHAN
	* wkt__INT
	* "<>"
	* EQUAL
	* wkt__SIGNED_NUMBER

Previous tokens: Token('NAME', 'public_key')

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/opt/pycsw/pycsw/pycsw/cql_test.py", line 36, in <module>
    parse_ecql(kvp)
  File "/opt/pycsw/lib/python3.10/site-packages/pygeofilter/parsers/ecql/parser.py", line 214, in parse
    return parser.parse(cql_text)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/lark.py", line 581, in parse
    return self.parser.parse(text, start=start, on_error=on_error)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/parser_frontends.py", line 106, in parse
    return self.parser.parse(stream, chosen_start, **kw)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/parsers/lalr_parser.py", line 41, in parse
    return self.parser.parse(lexer, start)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/parsers/lalr_parser.py", line 171, in parse
    return self.parse_from_state(parser_state)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/parsers/lalr_parser.py", line 188, in parse_from_state
    raise e
  File "/opt/pycsw/lib/python3.10/site-packages/lark/parsers/lalr_parser.py", line 178, in parse_from_state
    for token in state.lexer.lex(state):
  File "/opt/pycsw/lib/python3.10/site-packages/lark/lexer.py", line 489, in lex
    raise e  # Raise the original UnexpectedCharacters. The root lexer raises it with the wrong expected set.
  File "/opt/pycsw/lib/python3.10/site-packages/lark/lexer.py", line 478, in lex
    yield lexer.next_token(lexer_state, parser_state)
  File "/opt/pycsw/lib/python3.10/site-packages/lark/lexer.py", line 398, in next_token
    raise UnexpectedCharacters(lex_state.text, line_ctr.char_pos, line_ctr.line, line_ctr.column,
lark.exceptions.UnexpectedCharacters: No terminal matches '[' in the current parser context, at line 1 col 11

public_key[kid]=LJS&public_key[kty]=RSA&public_key
          ^
Expected one of:
	* MINUS
	* NOT
	* ILIKE
	* OR
	* LESSTHAN
	* COMMA
	* SLASH
	* LPAR
	* "<="
	* ">="
	* AFTER
	* IS
	* EXISTS
	* IN
	* BETWEEN
	* RPAR
	* "DOES-NOT-EXIST"
	* PLUS
	* LIKE
	* DURING
	* STAR
	* AND
	* MORETHAN
	* "<>"
	* EQUAL
	* BEFORE

Previous tokens: Token('NAME', 'public_key')

@securedimensions
Do you have a reference of the VendorSpecificParameters? Currently the use of the square brackets are indeed not supported.

The serialization using [ and ] is based on OpenAPI 3.0.2 deepObject and the VendorSpecificParameters is used with pyCSW. You can go to the current pyCSW  DEMO server for OGC Testbed 18 and specify the VSP like
{
  "additionalProp1": {"foo": "bar"}
}

What you get out is the following CURL as the OpenAPI serializes the query string using deepObject:
curl -X GET "https://ogc.demo.secure-dimensions.de/pycsw/search?limit=10&filter=&additionalProp1[foo]=bar" -H  "accept: application/geo+json"

@securedimensions
This is definitely something very different to CQL, so I'm against putting it in the parser for CQL. What I can suggest you to do is write your own parser for the "deepObject" style of query. It can implemented like this:
from pygeofilter import ast

queries = []

for param, value in kvp.items():
    if param.startswith("additionalProp1"):
        # TODO: get property name from additionalProp1[foo]
        property_name = ...
        query.append(ast.Equal(ast.Attribute(property_name), value))

filter = ast.And.from_items(*queries)

Please let me know if this was helpful.
I'll close this issue now. If you want, you can create a pull request with a parser for those "deepObject" style queries.


Make tag regex work for all languages

Instead of listing the characters that can be a part of a tag,
we list what can't be a part of a tag.
Fixing https://github.com/pretzelhands/notebag/issues/4.

Thanks for submitting that! 👍

Thanks for submitting that! 👍


Update peg check order

Fixes #26
Also has the fix to the status trigger not categorising penalty pegs correctly.
The new peg check order is:

Message format
Pegs remaining
Recipient is not self
Comment is present if required
Keywords

A fair bit of refactoring went into this one too.

:tada: This PR is included in version 1.15.4 :tada:
The release is available on:

v1.15.4
GitHub release

Your semantic-release bot :package::rocket:


android: 'ReactNativeSkiaView' is not Fabric compatible yet

ios no problem

If you are bumped into this "Fabric compatible" issue on android, try the steps below.

open gradle.properties file
set newArchEnabled=false
cd android && ./gradlew clean
remove app and install again


Bad Handshake when connecting to local MySql, on MacOS

Azure Data Studio Version: 1.41.0-insider, 1.41.0
Extension: MySQL v0.2.4, v0.2.3
OS: MacOS Ventura (13.0.1) or  MacOS Monterey
Extension successfully installed
MySQL Tools Service started
Trying to create a new connection of type MySql, to Server: localhost, user name: root, password password for root user here
Error Message : Bad handshake
ErrorCode : 1043
Connecting to the exact same MySQL server, with the same user & password, from a different client works fine.

Hi @stimocea,
Can you try connecting without SSL from ADS?
To disable ssl, In the connection dialog,
Goto Advanced Configuration and set SSL mode to Disable.
Also,
When connecting with other clients,
Can you provide the output of below query?
SHOW STATUS LIKE 'Ssl_cipher';
This will help in checking if you are connected with SSL

It's a miracle!
Hi @rishky-msft , thanks for your reply!
Yes, it connects successfully to the MySQL server indeed, when I disable the SSL for the connection
and It seems that the query SHOW STATUS LIKE 'Ssl_cipher'; into the other client indicates retrieves the below value:

Variable_name
Value

Ssl_cipher

However, when tested on Windows, there's no similar issue (I don't have to disable connection SSL) and the similar query returns

Variable_name
Value

Ssl_cypher
TLS_AES_256_GCM_SHA384

Is my MySQL server missing something (SSL?) on MacOS ?

Empty Ssl_cipher means that your local mysql server is getting connected without SSL for other clients as well.
@stimocea,
Seems like youe MySql server ssl configuration has some issues on your Mac Machine.


Show large description type data in Facebook Thumbnail card

Hi,
I want to show some data in Thumbnail card. But I am facing issues:

Text: "xxxxx" --> This field data is never shown in FB messenger
Title: "xxxx" --> If this title is too long, the FB messenger shows '......' in front.

So which field should i use if I want to show large description type data.

Text: "xxxxx" -> Facebook Messenger channel does not support "text" name property, that's why you will not see the text inside the Thumbnail Card. (I suggest to send the text outside the Thumbnail Card).
Title: "xxxx" -> Facebook Messenger channel has a limit of 80 character for the "title" name property, that's why you will see "..." after 77 character of your title text.  (I suggest to change the title of the card and use the long text outside the card).

Facebook Messenger - Generic Template Reference:
https://developers.facebook.com/docs/messenger-platform/send-api-reference/generic-template

@afficionaddo  it looks like reyesrico answered your question, so I'm closing this issue. Please feel free to reopen this or create a new one if you still need help. Thanks!


Several issues were generated in building the source code with LLVM 18

A few issues were found in building TVM 0.13.0 by using LLVM 18 in Ubuntu22.04, and the way presented in cmake/config.cmake file was tried to build the source code.
llvm::CGFT_ObjectFile and llvm::CGFT_AssemblyFile in several files (codegen_amdgpu.cc codegen_hexagon.cc, codegen_nvptx.cc) should be replaed with llvm::CodeGenFileType::ObjectFile and llvm::CodeGenFileType::AssemblyFile.
BTW, in the file llvm_instance.cc, changes should be made as well in some code snippets which used llvm::CodeGenOpt::Level::None and similar statements. llvm::CodeGenOptLevel::None should be used instead in building the source code of TVM by LLVM 18.0.
FYI.

Thanks for reporting this. Could you please send a PR to fix it?

These changes were done a while back to support LLVM 18 in #15921. I think the #ifdef macro guards should have ensured that we use the correct type if the LLVM version was >= 18.0.
For example in llvm_instance.cc, this condition should become false and it should use the right check.
I'm using LLVM 18 and I'm not seeing the build errors, so could you please check whether the TVM_LLVM_VERSION macro is set correctly?


Execute: floating point rounding assertion error

Describe the bug
Tests may throw an AssertionFailedError when comparing floating point numbers due to rounding.
Attachments
To help us diagnose the failure, please add these attachments to the issue, as appropriate:

If the failure occurred for the execute command, please attach the zip file of the directory
containing the generated test JUnit test cases
junit-reports.zip

Environment information

CLI version: commit 19f8aa1199aa8dddff95032e2addb3b9d63d46ef
OS: macOS

@w3dkramer I looked into this issue. It turns out that Randoop API which we are using for executing the test cases (while generating them, for recording of results) is rounding/cutting these float values, so the subsequent digits are lost when recording results. This will be challenging to fix in a third-party tool. Currently we require a delta of at most 0.0001 between recorded values and values created during test execution. We can relax this requirement but running the risk of missing floating point computation bugs. Will be happy to hear your view on this trade-off.

@rachelt44 Is it practical to change the delta specifically for tests executed with the Randoop API? Since the API seems to be cutting off or rounding after two decimal points, perhaps setting a delta of 0.01 (or 0.005) would make this executor compatible with it, without any noticeable ill effect.
I do not want to jeopardize the accuracy of the executor, but for this case for the TMF app the exact floating point rounding accuracy of this library file does not matter, so I am content with a relaxed requirement that allows the tests to pass. For this app this may be a moot issue since this the assertion errors are all raised from a file of an entire library we wish to exclude from test generation/execution if feature #59 is implemented.
If something changes to make it easier later on, enforcing the current requirement with both the expected and actual values would be terrific, but for now I would be happy if either the delta can be relaxed or we can exclude this file.

@w3dkramer thank you Daniel, this is very helpful. For now I refined the delta to 0.015. To obtain the fix you need to re-download the tackle-test-generator-core jar. We'll also handle soon the feature request you posted in #59.


How can I use a date parameter for UNTIL within RRULE ?

I don't know how to use a date parameter for UNTIL ?
RRULE:FREQ=YEARLY;UNTIL=20000131T090000Z
And what means the letter Z at the end ?
Your code sounds really great !
I just need to try it more !

Year: 2000
Month: 01
Day: 31
Hour: 09
Minute: 00
Seconds: 00
Timezone: Zulu (UTC/GMT)

The date is in ISO 8601 format.


Post Pagination

Expected behavior
I would expect there to be something within the standard post object that handles paginated posts...or a method that can do that for us.
Actual behavior
I don't see anything in the code for this functionality but maybe I'm blind.
What version of WordPress, PHP and Timber are you using?
WordPress 4.6.1, PHP 5.6, Timber 1.1.6
How did you install Timber? (for example, from GitHub, Composer/Packagist, WP.org?)
Composer
Sorry if this isn't the place for this type of question but I didn't see a forum or anywhere for support besides the issue tracker here. (I love Timber/Twig BTW...thanks!)

Oh, by pagination in the post...I'm referring to what you would get with <!––nextpage––> -- usually I would use wp_link_pages();

It appears I've duplicated this issue - #133
Should I leave this open as the other is closed?

I had the same problem, I found issue #529 which explains how paging in multipage posts works.

Thanks @terrarum - I guess I should have closed this issue a while ago considering there is already an option issue for it on #529

Post pagination seems to have been added to Timber since then. Here's a little blob of template code that may be of help to anyone trying to puzzle this one out nowadays.
{% if post.pagination %}
  Pages:
    {% for page in post.pagination.pages %}
      {% if page.current %}
        {{ page.title }}{{ loop.last ? '' : ', ' }}
      {% else %}
        {{ page.title }}{{ loop.last ? '' : ', ' }}
      {% endif %}
    {% endfor %}

{% endif %}

@CamelKing Did you try to follow the Pagination Guide yet?

@gchtr yes I did, and it works, for posts (as in for the index page with many posts and you need to paginate it).
However, for post with  which need to be paginated, the pagination property of the post object is always an empty array. Normally (without Timber/Twig) I would use wp_link_pages() to display the pages' links. In Timber case, I was expecting the pagination property within the post object would have been setup, but it has always been an empty array.

@gchtr , I have been looking at a few places ... I noticed the followings in the code:
File: test-timber-post.php
Function: testPagedContent()
Line: 404

$this->go_to( get_permalink( $post_id ) );
// @todo The below should work magically when the iterators are merged
setup_postdata( get_post( $post_id ) );
$post = Timber::get_post();
$this->assertEquals( $page1, trim( strip_tags( $post->paged_content() ) ) );

This function made a call to setup_postdata(), which is the only place that will setup the $multipage global variables. Reading the @todo in the code, thinking may be something was bypassed in the testing? As it is now, $multipage will always be false, and as such, no Pagination property will be setup within the Post object.
Not sure if this is the issue.

@gchtr, just a follow up, I made a small change to the post.php as per followings:

public function pagination() {
global $post, $page, $numpages, $multipage;
$post = $this;
setup_postdata(get_post($this));  /* <<--- added this line to setup global vars for post */
$ret = array();

This fixed the pagination issue I have with post (not query) that has ' tag in them, and the call to setup_postdata() sets up all global variables for posts accordingly, including the all important $multipage, which will allow this function (pagination) to run through the tags and setup the pagination object correctly.
As I am new to wordpress, php and timber as a whole, I am not sure if this is the right fix to the problem, or if there is any side effect (such as performance hit), I guess I will leave it for you guys to explore if this is the right thing to do.

@gchtr any comments?

@CamelKing using it in my extends class, thanks!
additional: i added
if ($page == 0)
			$page = 1;

to the content() function, page = 0 returns the entire content without paginating so it should default to 1. Has no tested side effect on the normal Post Pages.

However, for post with which need to be paginated, the pagination property of the post object is always an empty array. Normally (without Timber/Twig) I would use wp_link_pages() to display the pages' links. In Timber case, I was expecting the pagination property within the post object would have been setup, but it has always been an empty array.

@CamelKing Sorry for the late reply. I’m trying to improve documentation for the different types of pagination in #2295. Here you can find the draft documentation for paged content in posts: https://github.com/timber/timber/blob/2.x-docs-pagination/docs/v2/guides/pagination.md#paged-content-for-posts. The documentation for paged content should apply to Timber v1 as well, even though this will be added to 2.x.
I tested it with the Starter Theme and the current version of Timber (1.17.0) and it seems to work fine without having to use setup_postdata(). If it’s still an issue for you, I’d be glad if you could open a new issue so we can have look at it separately.


IdentityOptions - multiple

My site can be accessed on the following url's:
one.foo.com
two.foo.com
one.bar.com
two.bar.com
I'd like to configure ASP.NET Identity so that a user can navigate from one.foo.com to two.foo.com and still remain signed in.
The same goes for one.bar.com and two.bar.com.
But this means I need to configure multiple IdentityOptions, one with a sign in cookie that has a domain .foo.com and another with a sign in cookie that has a domain .bar.com.
How should I best achieve this?

This issue is being closed because it has not been updated in 3 months.
We apologize if this causes any inconvenience. We ask that if you are still encountering this issue, please log a new issue with updated information and we will investigate.


PyRanges.join() and match columns as well as genomic range

I'm trying to assign regions from one PyRanges object to those that are defined in another.  What I would like to do is merge using PyRanges.join()both on genomic region as well as on metadata columns that match across the two datasets (in a similar manner to how PyRanges.cluster() or PyRanges.merge() operate).
Here's a small example:
import pyranges

starts = [1, 10, 20]
ends = [15, 12, 25]
chroms = [1, 1, 1]
gids = ['gene_1', 'gene_2', 'gene_2']
gr = pyranges.PyRanges(chromosomes=chroms, starts=starts, ends=ends).as_df()
gr['gene_id'] = gids
gr = pyranges.PyRanges(df=gr)

starts = [11, 11]
ends = [11, 11]
chroms = [1, 1]
gids = ['gene_1', 'gene_2']
gr2 = pyranges.PyRanges(chromosomes=chroms, starts=starts, ends=ends).as_df()
gr2['gene_id'] = gids
gr2 = pyranges.PyRanges(df=gr2)

gr2.join(gr, how='left', strandedness=None)

Here are the tables and what the result of what I can achieve with join looks like:

And here is what I would like the output from changing this function and possibly what the call would look like, similarly to how pandas joins work:
gr2.join(gr, how='left', strandedness=None, on=['gene_id'])

This is a simplified example but I can imagine that this would be useful to some people! And if this is already possible with a different function I'm not seeing, I'd love to know.

Thanks for asking :D
I think this is possible to do as two operations:
j = gr2.join(gr)
j[j.gene_id == j.gene_id_b]

# +--------------+-----------+-----------+------------+-----------+-----------+-------------+
# |   Chromosome |     Start |       End | gene_id    |   Start_b |     End_b | gene_id_b   |
# |   (category) |   (int32) |   (int32) | (object)   |   (int32) |   (int32) | (object)    |
# |--------------+-----------+-----------+------------+-----------+-----------+-------------|
# |            1 |        11 |        11 | gene_1     |         1 |        15 | gene_1      |
# |            1 |        11 |        11 | gene_2     |        10 |        12 | gene_2      |
# +--------------+-----------+-----------+------------+-----------+-----------+-------------+
# Unstranded PyRanges object has 2 rows and 7 columns from 1 chromosomes.
# For printing, the PyRanges was sorted on Chromosome.

If you do not know the subsetting syntax it is not easy to do though. Is the above approach ok with you or is there something you miss?

Hi! Thanks, I'm not sure how I didn't think of this as a solution. I think this will work for me, but I can imagine that for large datasets with a lot of overlaps the matrix that results from the join operation might be prohibitively large, in which case it might still be a good idea to implement an option like this! Either way I hope this issue might help others with the same problem!

Yes, I've been thinking of creating a recipe collection for PyRanges. Many things are simple to do with a few operations, but it might not be obvious how to do so without a good familiarity with the API.

Ah I actually realize why your solution is actually directly incompatible with what I need -- I need the inverse of what already overlaps with a specific region / set of columns. With your approach, query regions that are duplicated or overlap but with different identifying columns will be even further duplicated if there are extra overlapping regions in the reference dataset.

If you post an example I'm sure I can help. I did solve your stated problem and I'm sure I can do so again :)
If this is something that is hard to do given the current operations I'll add support for it.


Maintenance script for mapping list normalisation

Current status (output provided by the script):
Total: 3664 [0_all.tsv]
  Mapping target cannot be parsed: 0 [1a_cannot_parse_mapping.tsv]
  Mapping target can be parsed: 3664
    Duplicates: 144 (removed)
    Unique: 3520 [2_unique.tsv]
      Not in EFO: 205 [3a_not_in_efo.tsv]
      In EFO but obsolete: 902 [3b_obsolete.tsv]
      In EFO and live (current): 2413 [3c_live.tsv]

Total mappings after normalisation: 3520 [manual_string_NORM.tsv]

This is just the base PR; inclusion and normalisation of other sources will follow shortly and will be built on top of this one.

@ireneisdoomed Yes, you raise a good point which we've briefly discussed previously; I think there are some advantages to working on the original, unmodified ontology data (this avoids, for example, accumulating potential processing errors), but there are good things to be had from working with the disease index as well.
Again, this is not something I'll be looking at in the current iteration, but I'll be sure to keep this in mind for any future updates


thumbs up/down

Context & versions
https://dev-sanchonet.govtool.byron.network/proposal_pillar/proposal_discussion/291
Actual behavior

Expected behavior
Add an info icon prompting the user to connect their wallet if they want to add thumbs up/down without connecting their wallet.

Verified on Sancho, closing.


Simple Stuff - how to trigger a service upgrade

I'm really looking for a simple example on how to wire up a webhook to trigger a service upgrade.
When a container is built on Quay.io, I'd like to execute the rancher api to build my dev service automatically.
While the documentation is quite detailed, it would be very helpful to have a simple guide on how to do this exact task, as I'm sure many of us Tutum refugees would find useful.
So the work flow will be Code -> Check-in -> Quay -> [need help here ]-> Rancher -> Profit.
My old workflow was Code -> Check-In -> Quay -> Tutm via Webhook -> Profit

I believe you are looking for this feature to be implemented:
https://github.com/rancher/rancher/issues/619

Please re-open if the issue that I referenced is not what you are looking for.

made a quick script on a docker image do do the job from my ci
https://github.com/codecasts/rancher-deployer


[WIP] feat(rule): add no-output-prefix rule

There's a rule to prevent prefixes on @Output (no-output-on-prefix) which is great, however it only prevents a single prefix: on, but people, depending on team could have another rules for prefixes and also what's considered a prefix (people may think that it shouldn't allow onrequest as it does for onRequest, for example, however it doesn't).

This is similar to no-input-prefix, except that instead of passing an array of strings, you pass a string that'll be converted using new RegExp, as tslint#max-line-length#ignore-pattern does, to give more flexibility depending on what you consider a prefix.
For example, it will prevent this:
@Output() onPrefix = new EventEmitter<void>();
@Output() onprefix = new EventEmitter<void>();
@Output() yesPrefix = new EventEmitter<void>();

... if you define it like this:
"no-output-prefix": [true, "^(on|yes)[a-zA-Z]+"]

@mgechev I did mark this as WIP because I want to know what's your position about this.

@rafaelss95 although I like this PR, I haven't seen many feature requests for such feature.
If we decide to go with this rule, my proposal would be to drop no-output-on-prefix and generalize it with the current one, where the default regex is /^on.

Yes, the proposal was initially to replace the currently no-output-on-prefix. It surges on a team I'm working on as we needed to avoid other prefixes than just on.
Taking the fact that we're talking about prefix, what about accept regex in no-input-prefix?

Yes, makes sense for both rules.


Clarify PermutationTable deprecation

Closes https://github.com/brendanzab/noise-rs/issues/151

Awesome, thanks!


Add/Update  logs- troubleshooting docs

What this PR does / why we need it

Troubleshoot Clusters with Tanzu Diagnostics & Troubleshoot Cluster Bootstrapping have largely the same content. This PR combines the common content into Troubleshoot Clusters with Tanzu Diagnostics and deletes Troubleshoot Cluster Bootstrapping  - this doesn't introduce new content - it's just restructure

Creates a new topic with some of the content from Troubleshoot Cluster Bootstrapping - Troubleshoot Cluster Deployment Manually - this doesn't introduce new content - it's just restructure

Adds a new topic to address #3253

Fixes the right nav headings in Cluster Debugging Tips so that there is one nav item per tip.

Expands bootstrap glossary term with some content that was in Troubleshoot Cluster Bootstrapping

Which issue(s) this PR fixes

Fixes: #https://github.com/vmware-tanzu/community-edition/issues/3253
Describe testing done for PR
Special notes for your reviewer

@jakerobinson

@kcoriordan - looks to be merge conflicts on this one. Otherwise, LGTM

closing and replacing with #4379


How to change a title after call ConfigureServices?

Hello,
Greetings for the day!
I would like to change a title after call ConfigureServices I meaning the object info.title in swagger.json file.
Who has a way for inject parameter. Please talk about with me.
Yours sincerely,
Rattanasree

I have no idea what you're asking for. Perhaps you could provide a code sample and screenshot to describe exactly what you're requesting here?

Closing due to inactivity


Productivity reminders not working

The productivity reminder to start using the app is not working for me even though I have scheduled reminders.

@13hannes11 What device and OS version are you using?
Did you shut down/ restart your phone before this occurred?

@13hannes11 What device and OS version are you using?
Did you shut down/ restart your phone before this occurred?

Interestingly yesterday I got a reminder for the first time. I will observe the behaviour in the next week and report back.

@adrcotfas I am running on the Fairphone 4, Android 11 (build: FP4.FP4I.A.175.20221207)
After it working once, I continue to not get any reminders.
These are the settings I have:


SharePoint Framework SLA

Category

[X] Question
[ ] Typo
[ ] Bug
[ ] Additional article idea

Question
What are the SLA's for SharePoint Framework?
We all know that the Office 365 support channels don't even bother supporting any customizations or SPFx. But what are the service level agreements for SharePoint Framework, what can we expect as developers and enterprises using SharePoint Framework as a business crucial component of their modern workplaces.
For instance:

What are the official channel of requesting support?
Is it this forum on Github? If so, how long can we expect an issue to be answered and eventually be resolved?
How long will the different versions of SPFx be supported?
How long will a major/minor/patch version for SPFx be supported? N-1 versions, 12 months, 4 years?
There's been changes/removal in non-preview/beta code that prohibits upgrades to newer versions of the framework - how long can one stay on an older version? Removal of features has typically (in SharePoint history) been deprecation warnings and not point-blank nuke of functionality. Can we expect more of these?

Asking for a friend ;)

I'd be very interested to know this also. The amount of issues that the business I work for has had with production SPFX deployments, and the very difficult time we've had going through official channels (TAM, O365 support) means that this is the only place we can get any sort of suitable response.
However, this is not appropriate for an enterprise business and (along with the amount of issues we've experienced, i.e. not production ready) is making the development manager at my company very nervous, to the point where he's considering pulling future development using SharePoint/SPFX.

Completely understandable asks and let me try to clarify the situation in best possible ways.

As SharePoint Dev support is not provided through the SharePoint Online support channels, we from the engineering have opened this issue list for reporting issues. This is to ensure that there's at least some channel for anyone to report any critical issues they might have with SharePoint development
We triage typically incoming requests/questions/issues twice a week in the engineering side and route them to the right people. This is also when we prioritize the issue internally. Prioritization impacts the issue SLA, but it's not visible externally.
If customer/partner has Premier Support agreement, that should be the default way to report anything critical, so that the support item has proper SLAs and escalation engineers handling the progress on the daily basis.
We have recently increased investments on this support model, so you will see more changes and more actions and assistance also directly in here as we get things moving.

On the separate topic of things. SharePoint Framework is designed to be backward compatible and we guarantee that any GA/production deployed web part or extension will work in the SPO also in future. This means that also SPFx v1.0 web parts should work in SPO without any issues now and in upcoming years. If this would not be the case, it would be a bug for us to solve.

Closing this for now as answered, but happy provide more details where suitable.

Thanks a bunch.
Answers my question on deprecation of methods as well then, as soon as we stay on a specific version we're guaranteed to have that feature available for the lifetime of SPFx.


Command Palette only showing 2 git commands?

I have VSCode 0.8.0 with beta 6 runtime on OSX Mavericks - when I want to run git commands, I hit the icon for git, and then I open the command palette, type "git", click "Execute Git Commands" and the only two commands I get are branch and checkout...why would that be? And how do I get the rest of the Git Commands to appear and work? If I try to enter the command I want (git push) I get an error "No Git Commands Matching". Git works perfectly fine from the command line in the project directory...

You should probably report this over at https://code.visualstudio.com/Issues/List instead :+1:

All done. Thank you.

This issue is being closed because it has not been updated in 3 months.
We apologize if this causes any inconvenience. We ask that if you are still encountering this issue, please log a new issue with updated information and we will investigate.


Second parameter of print is highlighted in green

Godot 3.2 beta1
When I write this:
extends Node

func _ready():
	var word = 42
	word += 42
	print("-> ", word, word)

The first occurrence of word in print is highlighted green for seemingly no reason.

Same with printerr and print_debug.

This is due to the -> which represents a function return type.

Duplicate of #33298 btw


Need More Details

Hi Jesse,
How can i handle the response messages from receiver(i am a sender)..messageArrived method will have all the responses (or) it will have only themessage which has been sent by user atlast . . .if u have any flow diagram for mqtt working actions for android pls provide  ..  ..

So once you send a message the function deliveryComplete gets called on success. If you are subscribed to a topic those messages will be received through the messageArrived function.
The documentation is straight out of the Java Paho client for the MqttCallback interface and can be found at this link.
As per a flow diagram if you are having trouble with the MQTT flow take a look here. Although that link is for AMQP the same overall concept of publish and subscribing can be drawn for MQTT. RabbitMQ has useful diagrams.
Hope that helps.

Great Thanks for ur comments.i will look into the link which u have provide and come back to you..

This is my code . .
@Override
public void onCreate() {
super.onCreate();
try {
connect();
} catch (MqttException e) {
e.printStackTrace();
}
}
private void connect() throws MqttException{
    SharedPreferences prefs = this.getSharedPreferences("default", MODE_PRIVATE);

    if (prefs.contains(CLIENT_ID) == false) {
        String clientId = java.util.UUID.randomUUID().toString();
        SharedPreferences.Editor editor = prefs.edit();
        editor.putString(CLIENT_ID, clientId);
        editor.commit();
    }

    String clientId = prefs.getString(CLIENT_ID, "");
    String server = "<IP_ADDRESS>";
    String port = "1883";
    boolean cleanSession = false;

    String uri = "tcp://" + server + ":" + port;

    mClient = new MqttAndroidClient(this, uri, clientId);
    MqttConnectOptions conOpt = new MqttConnectOptions();

    conOpt.setCleanSession(cleanSession);
    conOpt.setConnectionTimeout(10000);
    conOpt.setKeepAliveInterval(600000);
    conOpt.setUserName("admin");
    conOpt.setPassword("admin".toCharArray());

    mClient.setCallback(this);
    mClient.setTraceCallback(this);

    mIsConnecting = true;
    mClient.connect(conOpt, null, this);
}
public void sendMessage(String message) {
   // String topic = "Topic/qGKMJ:d5jvG:c4f4940c-2947-41e9-9a04-930422a5e5ab";
    String topic = "topic";
    String textToSend = message;
    int qos = 2;
    boolean retained = false;
    String[] args = new String[2];
    args[0] = textToSend;
    args[1] = topic+";qos:"+qos+";retained:"+retained;

    try {
        mClient.publish(topic, textToSend.getBytes(), qos, retained, null, this);
    }
    catch (MqttSecurityException e) {
        e.printStackTrace();
    }
    catch (MqttException e) {
        e.printStackTrace();
    }
}

@Override
public void onSuccess(IMqttToken iMqttToken) {
    if(mIsConnecting) {
        mIsConnecting = false;
        subscribe();
    }
}

private void subscribe()
{
    String topic = "topic";
    int qos = 0;

    try {
        String[] topics = new String[1];
        topics[0] = topic;
        getClient().subscribe(topic, qos, null, this);
    }
    catch (MqttSecurityException e) {
        e.printStackTrace();
    }
    catch (MqttException e) {
        e.printStackTrace();
    }
}

@Override
public void onFailure(IMqttToken iMqttToken, Throwable throwable) {
    Log.e(ChatService.TAG, "something went wrong: " + throwable);
}

@Override
public void connectionLost(Throwable throwable) {
    Log.e(ChatService.TAG, "something went wrong: " + throwable);
}

@Override
public void messageArrived(String s, MqttMessage mqttMessage) throws Exception {
    Log.i(TAG, mqttMessage.toString());
    mBinder.messageArrived(mqttMessage.toString());
}

@Override
public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) {

}

@Override
public void traceDebug(String source, String message) {

}

@Override
public void traceError(String source, String message) {

}

@Override
public void traceException(String source, String message, Exception e) {
    e.printStackTrace();
}

@Override
public IBinder onBind(Intent intent) {
    return mBinder;
}
public MqttAndroidClient getClient() {
    return mClient;
}

i have posted the action step by step ,which i have been doing now . .
1)First i have connected to the active mq server using Mqtt client mClient.connect() inside connect method
2)After connection was success,i can able to send message to the server by using mClient.publish() method in sendMessage() method.
3)my message got displayed in ActiveMq server Messages Enqueued List with my topic which have created statically . . .
4)After i published my message , i will implement IMqttActionListener  callbacks onSuccess and onFailure to check my message was created .In onSuccess() i have called subscibe() method ..Here i have big question . .am i doing actions correctly or what . .when shud i subscribe to the messages which will be sent to me ....
Please help me to get clear on this . ..also i do not no what retain and qos exactly do in this process .. .  . .

I have integrate this code https://eclipse.org/paho/clients/android/sample/ in my studio and tested . . .
the flow was
Me : connect to server ----> subscribe the topic ----> publish to the topic -----> notified by the app
User2 (Server Side) : connect to the topic ----> read the message which i have sent ---> reply top that message ..
me : i will be received notification of the message replied by the server team . . .
how i got this reply mesage ...(i.e) in code ,i cnt find where they handle this response ....


[Question] Class field declaration?

class A():
    let x = 233

This code won't work; can I ask why class fields must be declared without let?
Very cool project by the way ;-)

Primarily, this was done to improve compatibility with Python code - it is possible to write a complete class implementation, including class fields, methods, and decorators, which is equally valid in both Python and Kuroko, with some restrictions. The way this was implemented involved parsing class bodies specially - field assignments are a unique syntax in the language and do not work like normal let declarations or even other assignment statements. In fact, in Python class bodies are normal function bodies, but in Kuroko class bodies must consist only of an optional initial docstring followed by field declarations and method definitions, possibly with decorators attached, but can not contain arbitrary statements or control flow structures.


Publish to npm?

Because npm is the closest thing we have to a standard module repository for JavaScript (including the client-side). It's the largest module registry of its kind for any language. There are about 1/5th as many Bower modules as npm modules.
If that's not convincing enough: http://browserify.org/articles.html

@rauchg Expanding on that, I wrote an ugly little wrapper around this one that stops it touching window. It is a function that takes Promise and XMLHttpRequest constructors as arguments to return a fetch function. You could feed it node-xmlhttprequest to get the result you want in Node. That said, it would be better for this library just not to touch window. The wrapper uses a new Function, which I'm not happy about.

I dig it!

@qubyte
To expand, I think it's a very good idea to expose a function that returns the fetch polyfill, especially in Node.JS.
The main reason is that we'd have to start adding non-standard properties to the object passed to fetch for the inevitable need of more flexibility and configurability. Things like custom SSL options, a different Agent object, etc.
From a practicality standpoint, however, I wonder if it makes sense to pass the XMLHttpRequest instance though.
One reason is that node-xmlhttprequest already exhibits the lack of customizability mentioned above. I reported it to them here, because we use it extensively in engine.io-client and socket.io-client.
Their interim solution is to configure a single XMLHttpRequest class globally, which is not ideal if several instances with different options need to co-exist.
Maybe it's better to abandon the idea of sharing the code that depends on XMLHttpRequest, and internally use mikeal/request for node. The options passed to require('fetch')() are then passed onto mikeal/request.
All in all, what's important is that require('fetch')() has the exact same API as the spec, in both environments.

Maybe it's better to abandon the idea of sharing the code that depends on XMLHttpRequest, and internally use mikeal/request for node.

:+1:

All in all, what's important is that require('fetch')() has the exact same API as the spec, in both environments.

Agreed.

The main reason is that we'd have to start adding non-standard properties to the object passed to fetch for the inevitable need of more flexibility and configurability. Things like custom SSL options, a different Agent object, etc.

Exactly why all this would be better done in a separate library that targets node.js directly rather than building on top of XHR.

I think I'm just going to close this issue out.
This repo is going to remain a browser polyfill assuming a browser environment.
Definitely checkout https://github.com/matthew-andrews/isomorphic-fetch and maybe they'll be a node-fetch build on top of node's http lib. I'd be happy to link those up in the readme.
Thanks.

I still think this exact repo should be published to npm. npm is a great way to install polyfills.

@domenic :+1:

We'll definitely need an alt name on npm since fetch is taken. Hopefully something makes it clear that require('fetch') will not will in node.js.

Also pro if someone could setup travis' npm releasing http://docs.travis-ci.com/user/deployment/npm/ so I don't have to be bothered forgetting the extra step.

@josh, I've made a tool npm-prepublish that allows you to use GitHub releases & npm publish via Travis together seamlessly.
the way it works is you first remove the version property from package.json then run npm install --save-dev npm-prepublish and set up the travis.yml file so that it will do an npm publish with npm-prepublish as a before_deploy script (which puts the version number from the tag into the package.json) [all this is documented poorly — sorry, I will improve — on npm-prepublish's repo].
Basically, you don't have to do the irritating/easy to forget npm version blah && git push && git push --tags && npm publish dance.ust go to github, create a github release and the rest will just work.
Here's a worked example:-
https://github.com/Financial-Times/next-express/compare/v2.2.1...v2.2.2

@matthew-andrews Travis also has a feature to push a new NPM release whenever there's a new git tag automatically.
I should be able to submit a pull request for that later today.

@hawkrives I use that.  The problem is if you use the default Travis/npm approach you can't use GitHub releases otherwise the version number in package.json and the version in the tag drift out of sync, you must use npm version on the command line to update the version property in package.json.
My module eliminates this unnecessary step and requirement to release via the command line.

Ah.

the fetch package name was offered to you -> https://github.com/github/fetch/issues/9#issuecomment-59704339

Thanks @necolas for the reminder… I've put a note in the PR: https://github.com/github/fetch/pull/57

@hawkrives I owe you an apology.  It turns out they were happy with the edit-package.json-and-bower.json-update-the-version-number-git-tag-git-push---tags workflow after all and that the changes you described were exactly what they wanted.  I'm sorry for discouraging you from making a pull request that did that.

@matthew-andrews No worries. Yours cleared up some good ambiguities; I apologize for being slightly short with you.
Also, that's an epic hyphenated word in that post. Keep up the good work!

@josh how about browser-fetch-polyfill or browser-polyfill-fetch?
Being explicit in that it's a browser polyfill for fetch in the naming... regarding publishing to npm.

@tracker1 it's published now as whatwg-fetch. We could publish it twice under two different names but of that works for you it would be simpler to keep it as it is :).

Better to have a single canonical name. whatwg-fetch is fine, IMO.

For people interested in a node.js implementation:
https://github.com/bitinn/node-fetch

@bitinn good stuff

@bitinn nice! I was waiting for someone to write just that. Mind opening a PR to cross link it from our README? I totally think anyone wanting to use fetch in just node.js should be using your lib instead.


[Bug]: "Restart and Install" always available but does nothing

Preflight Checklist

[X] I have read the Contributing Guidelines for this project.
[X] I agree to follow the Code of Conduct that this project adheres to.
[X] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Ferdi Version
5.6.3
What operating system are you using?
macOS
Server
Ferdi
Operating System Version
12.0.1 (21A559)
What arch are you using?
arm64 (including Apple Silicon)
Last Known working version of Ferdi
A few months ago
Steps to reproduce, Expected Behavior, Actual Behavior
• Go to Settings > Updates
• Find "Restart & Install update" button is always available (when it is not expected to appear because there is no new version available)
OR
• Go to Settings > Updates
• Clicking the "Restart & Install update" button does nothing other than close Ferdi (when it is expected to do an upgrade).
In conclusion: Ferdi should update itself without issue, but the only way to update is to manually download the latest version.

Please search for older duplicates before logging new tickets.
This is a duplicate of #329

I did search but actually #329 didn't appear with my search query 😊

please search for closed tickets as well - lots of duplicates on this specific issue


Make dependency constrains less strict

Hi.
Using dependency==version in requirements.txt is okay for applications, but definitely not for libraries. This prohibits installing sphins-plantuml with latest sphinx version, e.g. 7.x, because library requires exactly sphinx==4.4.0.
Here I've relaxed dependency versions, they are low boundaries now instead of strict values.

@zqmillet could you please take a look?

This plugin would be very useful to use.
Estemating from #2, it seems the last activity has to be over a year.


No built-in way to return an error back to UI from exports.oauthCallback

This issue is in reference to app/controllers/users/users.authentication.server.controller.js:exports.oauthCallback
I could not figure out how to return a custom error and have it be displayed to the client in the context of the current starter code.  My workaround was to redirect to a custom error page which is okay but not ideal.
Use case is checking if user's email is on an invite list and returning an error msg if not.
It would be great if someone could confirm that this is indeed the case and that I am not overlooking some existing error return mechanism in exports.oauthCallback.
thanks

Can you be more specific?  Oauth requires redirecting off the application and when it redirects back the the return url it has to then authenticate and redirect somewhere.  If you look here:
https://github.com/meanjs/mean/blob/0.4.0/modules/users/server/controllers/users/users.authentication.server.controller.js
On line 87 if an error occurs it redirects to signin with the error on the URL.  Also if you put the err on the URL on the signin page you see the error:
http://localhost:3000/authentication/signin?err=this is a test
After I typed this whole thing i noticed that you probably aren't using 0.4.0.  You should switch to the 0.4.0 if you aren't committed to the master branch yet.

Great, this issue appears to be fixed in 0.4.0 with the introduction of the URL err arg.
Closing the issue.


Add a Delete All button

Add a button to delete everything in TACL's storage.

Cool, thank you for this suggestion!

It should work in the latest version!

It works!  Thank you!
At first, I thought it would be best to place it to the right of the Delete button, but I've grown to like it where it is.


Looks like a filename, not markup

/home/gelldur/.config/sublime-text-3/Packages/bs4/all/bs4/__init__.py:198: UserWarning: "b'.'" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.
  '"%s" looks like a filename, not markup. You should probably open this file and pass the filehandle into Beautiful Soup.' % markup)
font face "Times" could not be found, defaulting to "Monospace"

README file: https://github.com/gelldur/EventBus/blob/3688c145cbb6ff4f96bbb4a494a7b62eff6591d1/README.md

I tried to reproduce this, but didn't get the error message. I'm hence going to assume that this is no longer relevant to the latest version (it seems to work fine  :slightly_smiling_face: with it)


Redundant functions between Tensorflow Features Columns API and TF Keras Preprocessing Layers

In working with TF 2.0, I noticed that the TF Feature Columns API seems to overlap with the Keras Preprocessing layers (or Keras Utils). For example, you can create an tf.feature_column.indicator_column() which creates a bunch of dummy variables or a one-hot encoded matrix based upon a categorical variable. With Keras preprocessing or Utils, you can use the tf.keras.backend.one_hot() function to perform the same operation. I think there are similar overlaps between TF Feature Columns like the embedding columns and similar Keras functions for embedding columns.
I was just wondering if the steering committees for Tensorflow have any direction on whether they plan to promote one set of functions versus the other? Are there any plans to deprecate one set versus the other. For me, it is just a question of where to invest time and planning for code that might have to change in the future. Seems like maintaining the redundancy in the package will potentially lead to performance differences between similar functions, or confusion in setting up the code, etc.
NB
Oh yes, I actually asked this question in the Tensorflow Discussion forum, but no one answered it. @dynamicwebpaige even forwarded the message to @karmel and Mark Omernick, but no one responded. Hence, I posted here.

Hey Folks, any additional thoughts on this questions?

@fchollet I thought I would just follow up on this question. Is there any direction on whether users should use the Feature Columns API, or the TF Keras Preprocessing features? Both seem to do very similar things, so I image that Google would not want to maintain redundant code.
Thanks.

According to this Accepted RFC, the Keras Preprocessing Layers are introduced to replace feature columns and DenseFeatures. So, I guess once those layers are ready and exported, the plan is to deprecate feature columns. As mentioned in RFC, it is difficult to use feature columns in Keras functional API.
Preprocessing layers are better than feature columns in lot ways. Using layers like Normalization, TextVectorization avoids building preprocessing pipeline during prediction time, since they are built right into the model.
But I'm concerned that preprocessing layers like RandomCrop, RandomRotation, which are required only at training time are redundant. Since they are required only at training time and not at prediction time, it makes more sense to apply those preprocessing steps in tf.data.Dataset instead of in the model.
dataset = ... # Load images
dataset.map(lambda x: tf.image.random_crop(x, (size))
dataset.map(tf.image.random_flip_up_down)

model = ... #Build model

model.fit(dataset)

# Prediction
model.prediction(..)

So in my view, the criteria to define Preprocessing layers vs Dataset operations can be:

If the step is required at both training and prediction time -> Preprocessing layer
If the step is required only during training -> No Preprocessing layer, use Dataset operation

This can speed up the inference by eliminating unnecessary layer.

@ilango100 Thanks for the info. Yeah, I saw some mentions of the Keras Preprocessing layers but I think only a few of them are available under experimental right now. I agree that the feature layers are a bit confusing, but I have finally become used to them. That is good though, now I know what to keep my eye on for the future.

@00krishna  Keras Preprocesing layers are released in TF 2.3.0 release. Check the release notes for details.
In addition you can also checkout the FC to Preprocessing Layers migration guide
"Feature columns will continue to work for canned Estimators, but we believe Keras Preprocessing Layers better reflect the TensorFlow v2 programming models, and they integrate better with Keras, which is the preferred high level API in TF2. Thus, we encourage you to use Keras Preprocessing Layers for your preprocessing needs, and feature columns will be deprecated at some point in the future when the use cases can be fully replaced by Preprocessing Layers + Keras models."

@00krishna am closing this based on my previous comment, if you have any usecase that is not satisfied with the Keras Preprocessing Layers, please feel free to open a new issue.


Add discord badge

Created a discord server and added a badge to the README.
There are some interesting things in the pipeline for this project which I think require a good forum to discuss and ideate over. I think discord would be a great platform.

Good Idea!
I am wondering why the CI is failing suddenly.

I am wondering why the CI is failing suddenly.

Looking into this #97

merging for now, will address #97 in a separate PR if a change is necessary


quickmag reports mag for asteroids on a RX570 but asteroids website shows no GPU tasks reported

Asteroids site showing no AMD GPU tasks reported
https://asteroidsathome.net/boinc/gpu_list.php
Quickmag shows Mag for RX 570
Project Name|   Top 5 magnitude(s) for RX 570
Amicable Numbers|    24.0    13.7    11.4     8.8     8.0
Milkyway@home|    18.2    17.9    15.9    15.0    13.9
Srbase|    35.8    34.8    33.4    22.0     3.1
Gpugrid|     0.0    NULL    NULL    NULL    NULL
Asteroids@home|    69.5    40.0    29.7    26.0    19.0
Minecraft@home|    NULL    NULL    NULL    NULL    NULL

Asteroids is one of the oddball projects that is viable as either a GPU or CPU project. That mag is most likely being produced from CPU workunits.


getPlaylistItems returns tracks with null preview urls

Using v6.0.0-RC1
When calling getPlaylistItems, some tracks return with null preview urls even though querying directly through the Spotify API those tracks do have preview urls.
Code calling getPlaylistItems:
GetPlaylistsItemsRequest request = spotifyApi.getPlaylistsItems(playlistId).limit(queryLimit)        .offset(offset).market(CountryCode.GB).build();
final Paging<PlaylistTrack> response = request.execute();
This issue can be reproduced getting the playlist with id '5Acf2PaXyl3t5ZFK3tWhJy' where the track with id '68TJaMSstlIuOKpRr1riov' has a preview url in the response from the spotify api but not in the java object returned from the getPlaylistItems method.
https://api.spotify.com/v1/playlists/5Acf2PaXyl3t5ZFK3tWhJy/tracks?market=GB&limit=50
spotifyApiResponse.txt
This is one example but I've found the same issue for numerous tracks in different playlists belonging to different users.

Executing ((Track) response.getItems()[10].getTrack()).getPreviewUrl() works just fine for me.

Sorry, looks like it's to do with Spotify's Api itself. Some preview urls seem to return as null if you use app authorisation that don't return as null if you use user authorisation. Closing the issue.
P.s. Thanks for this library. Really useful!


Does it support Google Chat API?

I'm trying to implement Google Chat API but I cant seem to find the class for it. I only found Google\Service\Hangouts which is no longer supported on google. Thanks

No, it does not.
However, coding chat is quite easy, it is basic JSON:
$json = json_encode(['text' => $text], JSON_UNESCAPED_SLASHES); // basic text, but you can use cards as well: https://developers.google.com/chat/api/reference/rest/v1/spaces.messages#Message
            $ch = curl_init($space_id); // change to space ID, e.g. https://chat.googleapis.com/v1/spaces/...
            curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            $result = curl_exec($ch);
            curl_close($ch);

@mattprado21 after taking a look at the HangoutsChat set of classes, I think they have been updated to support Google Chat. You'll need to use the spaces set of calls as dms/rooms are deprecated. Let me know if you find otherwise and we can re-open, thanks!


⚠ Minecraft has degraded performance

In 127d343, Minecraft (https://www.minecraft.net) experienced degraded performance:

HTTP code: 200
Response time: 1350 ms

Resolved: Minecraft performance has improved in 00cab68.