BetterBibtex export fails for missing last name

Hi there,
since today I have an issue exporting my DB in the "Better BibTex" format. Other export formats (tested with BetterBibLatex and Zotero RDF) do not throw an error.  Below are the last lines in Zotero's error log.
>(3)(+0000002): Translate: {better-bibtex:Better BibTeX} markupparser: { "pos": 0, "name": "#text", "text": >"Hobson" }
>(3)(+0000000): Translate: {better-bibtex:Better BibTeX} markupparser: { "pos": 0, "name": "#text", "text": >"Paul" }
>(1)(+0000002): TypeError: family is null _enc_creators_bibtex@Better BibTeX:12895:1 >enc_creators@Better BibTeX:12628:28 add@Better BibTeX:12304:25 >reference_ts_1.Reference.prototype.addCreators@Better BibTeX:13131:5 Translator.doExport@Better >BibTeX:13287:9 doExport@Better BibTeX:107:5
>(2)(+0000000): Translate: Translation using Better BibTeX failed: TypeError: family is null >_enc_creators_bibtex@Better BibTeX:12895:1 enc_creators@Better BibTeX:12628:28 add@Better >BibTeX:12304:25 reference_ts_1.Reference.prototype.addCreators@Better BibTeX:13131:5 >Translator.doExport@Better BibTeX:13287:9 doExport@Better BibTeX:107:5 url => /media/datenhalde/UniShare/Diss/Latex/sources.bib downloadAssociatedFiles => true
>(5)(+0000000): Translate: Running handler 0 for error
>(5)(+0000000): Translate: Running handler 0 for done
>(3)(+0000000): Running unlock callbacks
>(3)(+0000000): Alert: An error occurred while trying to export the selected file.

Any idea what this error refers to? I have tried not exporting the last 20-or-so sources which were added since the last export or restart, but that did not help. Have not yet tried to re-install either Zotero nor BBT but can do that easily. Thanks for this fine piece of software and your help in this matter!

Tried an older version of BBT now (v5.0.141) and the export works like a charm. Something must have happened along the way.

Can you right-click the reference where that happens and send a bbt error report?

(the issue template is there for a reason. With a BBT error report, as requested by the issue template, I would have probably had this fixed by now)

Sure can.... I could identify the offending reference and indeed, without it, the BibTex export works even with the latest version. Just sent a BBT error message. Its ID is QA3SCJFT

The output currently looks like this:
@misc{Waskom2016,
  abstract = {v0.7.1 (June 2016)

Added the ability to put "caps" on the error bars that are drawn by barplot or pointplot (and, by extension, factorplot). Additionally, the line width of the error bars can now be controlled. These changes involve the new parameters capsize and errwidth. See the github pull request for examples of usage.
Improved the row and column colors display in clustermap. It
is now possible to pass Pandas objects for these elements and, when possible, the semantic information in the Pandas objects will be used to add labels to the plot. When Pandas objects are used, the color data is matched against the main heatmap based on the index, not on position. This is more accurate, but it may lead to different results if current code assumed positional matching.
Improved the luminance calculation that determines the annotation color in heatmap.
The annot parameter of heatmap now accepts a rectangular dataset in addition to a boolean value. If a dataset is passed, its values will be used for the annotations, while the main dataset will be used for the heatmap cell colors.
Fixed a bug in FacetGrid that appeared when using col\_wrap with missing col levels.
Made it possible to pass a tick locator object to the heatmap colorbar.
Made it possible to use different styles (e.g., step) for PairGrid histograms when there are multiple hue levels.
Fixed a bug in scipy-based univariate kernel density bandwidth calculation.
The reset\_orig function (and, by extension, importing seaborn.apionly) resets matplotlib rcParams to their values at the time seaborn itself was imported, which should work better with rcParams changed by the jupyter notebook backend.
Removed some objects from the top-level seaborn namespace.
Improved unicode compatibility in FacetGrid.},
  author = {Waskom, Michael and Botvinnik, Olga and {Drewokane} and Hobson, Paul and , David and Halchenko, Yaroslav and Lukauskas, Saulius and Cole, John B. and Warmenhoven, Jordi and Ruiter, Julian De and Hoyer, Stephan and Vanderplas, Jake and Villalba, Santi and Kunter, Gero and Quintero, Eric and Martin, Marcel and Miles, Alistair and Meyer, Kyle and Augspurger, Tom and Yarkoni, Tal and Bachant, Pete and Williams, Mike and Evans, Constantine and Fitzgerald, Clark and , Brian and Wehner, Daniel and Hitz, Gregory and Ziegler, Erik and Qalieh, Adel and Lee, Antony},
  month = jun,
  publisher = {{Zenodo}},
  shorttitle = {Seaborn},
  title = {Seaborn: {{V0}}.7.1 ({{June}} 2016)},
  year = {2016}
}

That is, with the fix I tested locally but forgot to push out. There will be an announcement by @blip-bloop soon about a version you can test -- please confirm that it works for you.

:robot: this is your friendly neighborhood build bot announcing test build <IP_ADDRESS>49.issue-978 ("fixes #978").

Man, that was quick! Export works as expected now. Thanks so much!

Thanks for the confirmation, I'll cut a new release (@label-gun keeps the issue closed until I close it so I have a reminder to merge & release)

(and yeah with a sample & a log, hard export errors are usually easy to fix. I've added your sample to the test set so the issue won't re-emerge)


fix(infra): adding initial work

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


curr_task_dir is not defined

https://github.com/lnis-uofu/OpenFPGA/blob/36113d35ac38e9ce10cec45dfbd18cac9e0c12de/openfpga_flow/scripts/run_fpga_task.py#L177
Traceback (most recent call last):
File "openfpga_flow/scripts/run_fpga_task.py", line 514, in
main()
File "openfpga_flow/scripts/run_fpga_task.py", line 99, in main
job_run_list = generate_each_task_actions(eachtask)
File "openfpga_flow/scripts/run_fpga_task.py", line 177, in generate_each_task_actions
clean_up_and_exit("Task directory [%s] not found" % curr_task_dir)
UnboundLocalError: local variable 'curr_task_dir' referenced before assignment

@lukefahr The error is actually means that the script cannot find the task.conf file with a given path to a task directory.

In most cases, your task should be placed under the task directory under your OpenFPGA root directory, e.g., https://github.com/lnis-uofu/OpenFPGA/tree/master/openfpga_flow/tasks
Alternatively, we also now support running the task  in any location. See details in https://github.com/lnis-uofu/OpenFPGA/issues/209

Hi Xifan,
I think what you want is for the python to politely say "Task directory X is not found" then die.  What's actually happening is python is crashing on an unbound local variable error because curr_task_dir is not defined.
-A

@lukefahr You are right. That is I want to improve as well. We will create a PR to solve this issue.


Pre-compression

Some of the performance problems with HTTP2 seem to be that gzip compression of small files is less optimal than gzip compression of large files, so bundling can still perform better. To address this, see if you can get access to the gzipped files after they are sent initially. Store those compressed files in memory and then serve them up. With this and server push, hopefully we can start fighting back against the bundling claims.

Zwitterion has nothing to do with memory in production, since it just produces a static build


Tutorial: evaluation of the XGBoost ensemble training fails

Describe the bug
Running the below cell in the Regression tutorial fails:
var xgbModel = train("XGBoost",xgb,trainData);
evaluate(xgbModel,evalData);

with these results:
---------------------------------------------------------------------------
java.lang.NoClassDefFoundError: Could not initialize class ml.dmlc.xgboost4j.java.XGBoostJNI
	at ml.dmlc.xgboost4j.java.DMatrix.<init>(DMatrix.java:109)
	at org.tribuo.common.xgboost.XGBoostTrainer.convertExamples(XGBoostTrainer.java:309)
	at org.tribuo.regression.xgboost.XGBoostRegressionTrainer.train(XGBoostRegressionTrainer.java:174)
	at org.tribuo.regression.xgboost.XGBoostRegressionTrainer.train(XGBoostRegressionTrainer.java:64)
	at org.tribuo.Trainer.train(Trainer.java:44)
	at .train(#45:4)
	at .do_it$Aux(#57:1)
	at .(#57:1)

To Reproduce
Run notebook in a docker container using these steps at https://github.com/neomatrix369/awesome-ai-ml-dl/tree/master/examples/tribuo:
git clone https://github.com/neomatrix369/awesome-ai-ml-dl/tree/master/
cd awesome-ai-ml-dl/examples/tribuo
./docker-runner.sh --notebookMode --runContainer

### wait it downloads the contain and browser opens up
### or open the browser to http://localhost:8888/notebooks/tribuo/tutorials/regression-tribuo-v4.ipynb

Expected behaviour
Should have shown these results:
Training XGBoost took (00:00:00:375)
Evaluation (train):
  RMSE 0.143871
  MAE 0.097167
  R^2 0.968252
Evaluation (test):
  RMSE 0.599478
  MAE 0.426673
  R^2 0.447378

Screenshots

System information:

OS: Linux 6a5b46663314 4.19.76-linuxkit #1 SMP Tue May 26 11:42:35 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Java Version: 11
JDK Vendor:
openjdk version "11.0.5" 2019-10-15
OpenJDK Runtime Environment (build 11.0.5+10-jvmci-19.3-b05-LTS)
OpenJDK 64-Bit GraalVM CE 19.3.0 (build 11.0.5+10-jvmci-19.3-b05-LTS, mixed mode, sharing)

** Jar versions **
tribuo-classification-experiments-4.0.0-jar-with-dependencies.jar
tribuo-core-4.0.0.jar
tribuo-json-4.0.0-jar-with-dependencies.jar
tribuo-regression-sgd-4.0.0-jar-with-dependencies.jar
tribuo-regression-tree-4.0.0-jar-with-dependencies.jar
tribuo-regression-xgboost-4.0.0-jar-with-dependencies.jar

I can't figure out the base image you're using, is it this - https://hub.docker.com/layers/valohai/jupyhai/latest/images/sha256-0ae21dee7e887c17eec73f5b04533ba48bdba896e46838d4aecf9264d52862d9?context=explore ?
Either way, we've have some dependency issues when using XGBoost in containers (see the note at the bottom of here - https://tribuo.org/learn/4.0/javadoc/org/tribuo/common/xgboost/XGBoostTrainer.html).
The libraries it expects according to ldd are:
	libjvm.so => not found
	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f1a5f1ba000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1a5f197000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1a5f18c000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1a5efab000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1a5ee5c000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1a5ee3f000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5ec4d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f1a5f860000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1a5ec47000)```

It'll pull in libjvm automatically as it's already in the process space when you load it via JNI, so I suspect it's either libc, libstdc++ or libgomp you're missing.

I can't figure out the base image you're using, is it this - https://hub.docker.com/layers/valohai/jupyhai/latest/images/sha256-0ae21dee7e887c17eec73f5b04533ba48bdba896e46838d4aecf9264d52862d9?context=explore ?

I'm planning to move to a simple base image, I;m only using this as it was quick for me to come up with a working notebook in a container. Just to get things to work first.

Either way, we've have some dependency issues when using XGBoost in containers (see the note at the bottom of here - https://tribuo.org/learn/4.0/javadoc/org/tribuo/common/xgboost/XGBoostTrainer.html).
The libraries it expects according to ldd are:
	libjvm.so => not found
	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f1a5f1ba000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1a5f197000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1a5f18c000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1a5efab000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1a5ee5c000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1a5ee3f000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5ec4d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f1a5f860000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1a5ec47000)

It'll pull in libjvm automatically as it's already in the process space when you load it via JNI, so I suspect it's either libc, libstdc++ or libgomp you're missing.

I will look closely into this, I might need to install these correctly in the container. Thanks for the heads up, now I see why the XGBoost tests are also failing.

So far I have a working Classification example inside the Jupyter (IJava) notebook, so it's first accomplishment - that tutorial requires minimum dependencies I think.

Yeah, the classification, clustering and anomaly detection tutorials are pure Java, so should run anywhere you've got Java 10+ up (for the var keyword). The regression and configuration tutorials use XGBoost4J which loads in the XGBoost native library, and so you could hit dependency issues.

Yeah, the classification, clustering and anomaly detection tutorials are pure Java, so should run anywhere you've got Java 10+ up (for the var keyword). The regression and configuration tutorials use XGBoost4J which loads in the XGBoost native library, and so you could hit dependency issues.

Got it, I'm patching my build image so these issues should reduce or go away for good. For now, I need on working example to know the docker image is fine to work with and build further.

Yeah, the classification, clustering and anomaly detection tutorials are pure Java, so should run anywhere you've got Java 10+ up (for the var keyword). The regression and configuration tutorials use XGBoost4J which loads in the XGBoost native library, and so you could hit dependency issues.

You suggestions worked @Craigacp, see
[INFO] Reactor Summary for Tribuo 4.1.0-SNAPSHOT:
[INFO]
[INFO] Tribuo ............................................. SUCCESS [ 17.524 s]
[INFO] Core ............................................... SUCCESS [01:55 min]
[INFO] tribuo-util ........................................ SUCCESS [  0.051 s]
[INFO] Tokenization ....................................... SUCCESS [  6.450 s]
[INFO] Data ............................................... SUCCESS [ 25.787 s]
[INFO] Json ............................................... SUCCESS [01:43 min]
[INFO] Math ............................................... SUCCESS [  8.937 s]
[INFO] tribuo-interop ..................................... SUCCESS [  0.043 s]
[INFO] Interop-Core ....................................... SUCCESS [  1.315 s]
[INFO] tribuo-common ...................................... SUCCESS [  0.058 s]
[INFO] Common-Tree ........................................ SUCCESS [  1.902 s]
[INFO] tribuo-classification .............................. SUCCESS [  0.072 s]
[INFO] Classification-Core ................................ SUCCESS [  7.346 s]
[INFO] tribuo-regression .................................. SUCCESS [  0.076 s]
[INFO] Regression-Core .................................... SUCCESS [  4.109 s]
[INFO] Interop-ONNX ....................................... SUCCESS [01:21 min]
[INFO] Interop-Tensorflow ................................. SUCCESS [ 11.693 s]
[INFO] Common-LibLinear ................................... SUCCESS [  1.360 s]
[INFO] Common-LibSVM ...................................... SUCCESS [  0.957 s]
[INFO] Common-NearestNeighbour ............................ SUCCESS [  1.634 s]
[INFO] Common-XGBoost ..................................... SUCCESS [  9.747 s]
[INFO] tribuo-anomaly ..................................... SUCCESS [  0.031 s]
[INFO] AnomalyDetection-Core .............................. SUCCESS [  1.774 s]
[INFO] AnomalyDetection-LibSVM ............................ SUCCESS [ 13.182 s]
[INFO] Classification-MultinomialNaiveBayes ............... SUCCESS [  5.849 s]
[INFO] Classification-Tree ................................ SUCCESS [  6.487 s]
[INFO] Classification-LibLinear ........................... SUCCESS [  7.553 s]
[INFO] Classification-LibSVM .............................. SUCCESS [  6.830 s]
[INFO] Classification-SGD ................................. SUCCESS [  7.014 s]
[INFO] Classification-XGBoost ............................. SUCCESS [ 31.476 s]
[INFO] Classification-Experiments ......................... SUCCESS [  8.563 s]
[INFO] Regression-SLM ..................................... SUCCESS [  9.759 s]
[INFO] Regression-Tree .................................... SUCCESS [  7.357 s]
[INFO] Classification-Explanations ........................ SUCCESS [ 17.887 s]
[INFO] InformationTheory .................................. SUCCESS [  2.038 s]
[INFO] tribuo-clustering .................................. SUCCESS [  0.049 s]
[INFO] Clustering-Core .................................... SUCCESS [  1.617 s]
[INFO] Clustering-KMeans .................................. SUCCESS [  7.630 s]
[INFO] tribuo-multilabel .................................. SUCCESS [  0.021 s]
[INFO] MultiLabel-Core .................................... SUCCESS [  1.941 s]
[INFO] Regression-LibLinear ............................... SUCCESS [  5.967 s]
[INFO] Regression-LibSVM .................................. SUCCESS [  6.154 s]
[INFO] Regression-SGD ..................................... SUCCESS [  6.659 s]
[INFO] Regression-XGBoost ................................. SUCCESS [ 15.330 s]
[INFO] tribuo-all ......................................... SUCCESS [  0.023 s]
[INFO] tribuo-tests ....................................... SUCCESS [  0.901 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  09:34 min
[INFO] Finished at: 2020-10-11T16:01:31Z
[INFO] ------------------------------------------------------------------------

This is what I did to the docker build script: https://github.com/neomatrix369/awesome-ai-ml-dl/blob/master/examples/tribuo/docker-image/Dockerfile#L30 and https://github.com/neomatrix369/awesome-ai-ml-dl/blob/master/examples/tribuo/docker-image/Dockerfile#L45

var xgbModel = train("XGBoost",xgb,trainData);
evaluate(xgbModel,evalData);

gives
Training XGBoost took (00:00:00:375)
Evaluation (train):
  RMSE 0.143871
  MAE 0.097167
  R^2 0.968252
Evaluation (test):
  RMSE 0.599478
  MAE 0.426673
  R^2 0.447378

Works now.
I'll close this issue. I hope there is some useful feedback here.

There's a place on the website that discusses the native libraries we use, that has some discussion of considerations using TF, but it's not got anything about xgboost or onnx runtime. I'd like to get a windows binary upstream into xgboost, but I've not had chance to push on that yet.

I can't figure out the base image you're using, is it this - https://hub.docker.com/layers/valohai/jupyhai/latest/images/sha256-0ae21dee7e887c17eec73f5b04533ba48bdba896e46838d4aecf9264d52862d9?context=explore ?
Either way, we've have some dependency issues when using XGBoost in containers (see the note at the bottom of here - https://tribuo.org/learn/4.0/javadoc/org/tribuo/common/xgboost/XGBoostTrainer.html).
The libraries it expects according to ldd are:
	linux-vdso.so.1 (0x00007ffffcff7000)
	libjvm.so => not found
	libgomp.so.1 => /usr/lib/x86_64-linux-gnu/libgomp.so.1 (0x00007f1a5f1ba000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f1a5f197000)
	librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f1a5f18c000)
	libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f1a5efab000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f1a5ee5c000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f1a5ee3f000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1a5ec4d000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f1a5f860000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f1a5ec47000)

It'll pull in libjvm automatically as it's already in the process space when you load it via JNI, so I suspect it's either libc, libstdc++ or libgomp you're missing.

@Craigacp I have just updated the tribuo docker image to a new base image, see this https://hub.docker.com/layers/neomatrix369/tribuo/0.2/images/sha256-061207cd26de6de294106c923de42e4d125e669bfdb5bf9fed763eeb1e221131?context=explore
Everything else works like it did.

Ok, so that docker image has all the right dependencies for XGBoost now?

Ok, so that docker image has all the right dependencies for XGBoost now?

Its does, I have demo-ed the Regression tutorial at the last presentation I gave earlier in the week.


When the meeting ends, update S4B meeting post to say so

Observed: After ending the meeting, the plugin still says the meeting was started

Proposed: Example from Zoom plugin below. It is okay to use a simpler version in the S4B plugin such as
<user> has ended the meeting

Skype for Business Meeting

Date: <Date> at <Time>

@jasonblais Unfortunately, this is not possible in S4B. According to the documentation, a meeting object doesn't have any fields like "status". There is no way to determine whether a meeting is ended or not. I tried a few days to find a solution but without any results :(

Ah I see. From reading the documentation I don't really have other ideas either. What's there now is good and we can always adjust based on user feedback 👍
Closing for now.


Add zmags display support

Viewable here: http://<IP_ADDRESS>:5714/digital-edition/zmags/b1b3b8f8

@zarathustra323 - WIP; in need of some assistance with the positioning.


Add example for identity file

I did not know that identity file == private key

The intent was to match the ssh -i behavior.
This change looks good to me.


MNT: Fix version number exported at build

Without exporting the version as the shell environment variable 'func_adl_version' func-adl will always set the version as 0.0.1a1 which breaks version checks.

c.f. https://github.com/iris-hep/func_adl/blob/b67b122de5000e6b3a2541d3ae9770faa7cb6086/setup.py#L55

Bump build number.
Needed for https://github.com/conda-forge/staged-recipes/pull/27997.

Checklist

[x] Used a personal fork of the feedstock to propose changes
[x] Bumped the build number (if the version is unchanged)
[N/A] Reset the build number to 0 (if the version changed)
[x] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[x] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.


Add table kubernetes_deployment_config

References
Add any related links that will help us understand the resource, including vendor documentation, related Kubernetes issues, and Go SDK documentation.

Kubernetes (K8s) does not have a built-in resource kind called DeploymentConfig. The concept of DeploymentConfig is not a native Kubernetes resource; it is specific to OpenShift, which is an extended container platform built on top of Kubernetes.
In OpenShift, the DeploymentConfig is used as a higher-level abstraction for deploying applications and managing their lifecycle. It provides capabilities similar to Kubernetes Deployments but with additional features like rolling deployments and hooks.
We already have a table in our Openshift plugin.

Thanks @Subhajit97
Marking this closed for now


snapshot: snapshots -> snapshot; snapshots/fake -> snapshot/snapshots

Current coverage is 73.17% (diff: 78.94%)

Merging #104 into master will not change coverage

@@             master       #104   diff @@
==========================================
  Files            52         52
  Lines          2300       2300
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits           1683       1683
+ Misses          536        534     -2
- Partials         81         83     +2

Powered by Codecov. Last update 2798ce9...fbfb400

https://phabricator.twitter.biz/D8271

LGTM


Dependencies from vaadin-client configuration conflict with jsp librieries in WTP deployment.

Version 1.0 of plugin adds dependencies from vaadin-client configuration to WTP component.
These dependencies are included to WTP deployment.
When an application uses JSP pages parallel to Vaadin, a method signature exception occurs during a JSP page execution.
The problem is that org.apache.jasper.runtime.PageContextImpl class is loaded from gwt-dev-2.7.0.vaadin4.jar and not from Tomcat own jasper.jar (in our case Tomact8).
Is it possible to exclude vaadin-client dependencies from WTP deployment as they are not present in packaged war?

Thanks!


Build is failing due to some import problems

Currently the OpenShift build is failing due to import issue in the settings.py. This fix should resolve that.
I tested this fix from my personal branch, So you might see latest as successful in Openshift

Oops! Thanks for the fix!


Building android package failed when using @nativescript/firebase

@farfromrefug
Sorry, me again.
I really want to use your plugin to generate both ios and android licenses.
Please forgive me to add issue again.
I got an error @nativescript-community/licenses: Plugin with id 'com.google.gms.google-services' not found. when I build android package.
com.google.gms.google-services is a plugin which is used in @nativescript/firebase.
You can find it in<EMAIL_ADDRESS>Sometimes build android package will success, I do not know how it happens.
But in that time, I noticed this log @nativescript-community/licenses:        + couldn't load user-defined configuration from /Users/chenj49/git/git_gs-linemo-native-app/native-app/app/App_Resources/Android/app.gradle. File doesn't exist..
My real app.gradle file path is /Users/chenj49/git/git_gs-linemo-native-app/native-app/App_Resources/Android/app.gradle.
So I think something wrong in @nativescript-community/licenses because it looked a wrong path, and that lead to make android build succeed.
I do not know what's wrong with it, I can not ask you to fix something exactly, but I really hope that we can make this plugin working on @nativescript/firebase.
I will share the logs in following situations.

build ios package successfully
build android package successfully
build android package fail

The following log is output when build ios package successfully.
$ npm run package:ios

><EMAIL_ADDRESS>package:ios /Users/chenj49/git/git_gs-linemo-native-app/native-app
> ns build ios --env.replace=./environments/environment.ts:./environments/environment.e2e.ios.ts

Copying template files...
Platform ios successfully added. v8.0.0
Preparing project...
DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue($color) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
75 │     $color-brightness: round((red($color) * 299) + (green($color) * 587) + (blue($color) * 114) / 1000);
   │                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>75:76  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue(#ffffff) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
76 │     $light-color: round((red(#ffffff) * 299) + (green(#ffffff) * 587) + (blue(#ffffff) * 114) / 1000);
   │                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>76:73  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div($light-color, 1.7)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
78 │     @return abs($color-brightness) < ($light-color / 1.7);
   │                                       ^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>78:39  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

assets by path images/*.png 123 KiB 13 assets
assets by path fonts/ 10.4 MiB
  assets by path fonts/*.ttf 385 KiB 4 assets
  assets by path fonts/*.otf 10.1 MiB
    asset fonts/NotoSansJP-Bold.otf 4.47 MiB [emitted] [from: app/fonts/NotoSansJP-Bold.otf] [copied]
    asset fonts/NotoSansJP-Regular.otf 4.34 MiB [emitted] [from: app/fonts/NotoSansJP-Regular.otf] [copied]
    asset fonts/fa5-regular-400.otf 1.24 MiB [emitted] [from: app/fonts/fa5-regular-400.otf] [copied]
assets by path *.js 11.5 MiB
  asset vendor.js 10.4 MiB [emitted] (name: vendor) (id hint: defaultVendor)
  asset bundle.js 1.14 MiB [emitted] (name: bundle)
  asset runtime.js 13.7 KiB [emitted] (name: runtime)
asset tns_modules/inspector_modules.js 1.25 KiB [emitted] (name: tns_modules/inspector_modules)
Entrypoint bundle 11.5 MiB = runtime.js 13.7 KiB vendor.js 10.4 MiB bundle.js 1.14 MiB
Entrypoint tns_modules/inspector_modules 10.4 MiB = runtime.js 13.7 KiB vendor.js 10.4 MiB tns_modules/inspector_modules.js 1.25 KiB
runtime modules 2.84 KiB 9 modules
orphan modules 538 bytes [orphan] 7 modules
modules by path ./node_modules/ 3.86 MiB 385 modules
modules by path ./app/ 374 KiB
  modules by path ./app/pages/*.vue 147 KiB 73 modules
  modules by path ./app/components/*.vue 17.1 KiB 21 modules
  modules by path ./app/styles/*.scss 38.2 KiB 14 modules
  modules by path ./app/utils/*.ts 24.2 KiB 6 modules
  modules by path ./app/store/*.ts 5.96 KiB 3 modules
  modules by path ./app/exception/*.ts 9.23 KiB 3 modules
  3 modules
modules by path external "~/*.json" 84 bytes
  external "~/licenses.json" 42 bytes [built] [code generated]
  external "~/package.json" 42 bytes [optional] [built] [code generated]
./environments/environment.e2e.ios.ts 455 bytes [built] [code generated]
webpack 5.49.0 compiled successfully in 9697 ms
Webpack compilation complete.
nativescript-plugin-firebase: /Users/chenj49/git/git_gs-linemo-native-app/native-app/platforms/ios/.pluginfirebaseinfo not found, forcing prepare!
nativescript-plugin-firebase: running release build or change in environment detected, forcing prepare!
Installing pods...
Analyzing dependencies
Pre-downloading: `lottie-ios` from `https://github.com/farfromrefug/lottie-ios.git`
Downloading dependencies
Installing BEMCheckBox (1.4.1)
Installing Firebase (6.34.0)
Installing FirebaseABTesting (4.2.0)
Installing FirebaseAnalytics (6.9.0)
Installing FirebaseCore (6.10.4)
Installing FirebaseCoreDiagnostics (1.7.0)
Installing FirebaseCrashlytics (4.6.2)
Installing FirebaseDynamicLinks (4.3.1)
Installing FirebaseInstallations (1.7.0)
Installing FirebasePerformance (3.3.2)
Installing FirebaseRemoteConfig (4.9.1)
Installing GTMSessionFetcher (1.5.0)
Installing GoogleAppMeasurement (6.9.0)
Installing GoogleDataTransport (7.5.1)
Installing GoogleToolboxForMac (2.3.1)
Installing GoogleUtilities (6.7.2)
Installing IQKeyboardManager (6.2.1)
Installing PromisesObjC (1.2.12)
Installing Protobuf (3.17.0)
Installing SAMKeychain (1.5.3)
Installing lottie-ios (3.2.3)
Installing nanopb (1.30906.0)
Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `nativeapp.xcworkspace` for this project from now on.
Adding Acknowledgements
Pod installation complete! There are 9 dependencies from the Podfile and 22 total pods installed.
Updating runtime package.json with configuration values...
Project successfully prepared (ios)
Configure firebase
Add iOS crash logging
Building project...
Xcode build...
Project successfully built.
The build result is located at: /Users/chenj49/git/git_gs-linemo-native-app/native-app/platforms/ios/build/Debug-iphonesimulator/nativeapp.app

The following log is output when build android package successfully.
$ npm run package:android

><EMAIL_ADDRESS>package:android /Users/chenj49/git/git_gs-linemo-native-app/native-app
> ns build android --env.replace=./environments/environment.ts:./environments/environment.e2e.android.ts

Preparing project...
DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue($color) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
75 │     $color-brightness: round((red($color) * 299) + (green($color) * 587) + (blue($color) * 114) / 1000);
   │                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>75:76  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue(#ffffff) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
76 │     $light-color: round((red(#ffffff) * 299) + (green(#ffffff) * 587) + (blue(#ffffff) * 114) / 1000);
   │                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>76:73  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div($light-color, 1.7)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
78 │     @return abs($color-brightness) < ($light-color / 1.7);
   │                                       ^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>78:39  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

assets by path images/*.png 123 KiB 13 assets
assets by path fonts/ 10.4 MiB
  assets by path fonts/*.ttf 385 KiB
    asset fonts/fa-solid-900.ttf 204 KiB [compared for emit] [from: app/fonts/fa-solid-900.ttf] [copied]
    asset fonts/fa-brands-400.ttf 131 KiB [compared for emit] [from: app/fonts/fa-brands-400.ttf] [copied]
    asset fonts/fa-regular-400.ttf 39.1 KiB [compared for emit] [from: app/fonts/fa-regular-400.ttf] [copied]
    asset fonts/wing-icon.ttf 10.9 KiB [compared for emit] [from: app/fonts/wing-icon.ttf] [copied]
  assets by path fonts/*.otf 10.1 MiB
    asset fonts/NotoSansJP-Bold.otf 4.47 MiB [compared for emit] [from: app/fonts/NotoSansJP-Bold.otf] [copied]
    asset fonts/NotoSansJP-Regular.otf 4.34 MiB [compared for emit] [from: app/fonts/NotoSansJP-Regular.otf] [copied]
    asset fonts/fa5-regular-400.otf 1.24 MiB [compared for emit] [from: app/fonts/fa5-regular-400.otf] [copied]
assets by path *.js 11.2 MiB
  asset vendor.js 10.1 MiB [compared for emit] (name: vendor) (id hint: defaultVendor)
  asset bundle.js 1.14 MiB [compared for emit] (name: bundle)
  asset runtime.js 13.7 KiB [compared for emit] (name: runtime)
Entrypoint bundle 11.2 MiB = runtime.js 13.7 KiB vendor.js 10.1 MiB bundle.js 1.14 MiB
runtime modules 2.84 KiB 9 modules
orphan modules 542 bytes [orphan] 7 modules
modules by path ./node_modules/ 3.74 MiB 381 modules
modules by path ./app/ 374 KiB
  modules by path ./app/pages/*.vue 147 KiB 73 modules
  modules by path ./app/components/*.vue 17.1 KiB 21 modules
  modules by path ./app/styles/*.scss 38.2 KiB 14 modules
  modules by path ./app/utils/*.ts 24.2 KiB 6 modules
  modules by path ./app/store/*.ts 5.96 KiB 3 modules
  modules by path ./app/exception/*.ts 9.23 KiB 3 modules
  3 modules
modules by path external "~/*.json" 84 bytes
  external "~/licenses.json" 42 bytes [built] [code generated]
  external "~/package.json" 42 bytes [optional] [built] [code generated]
./environments/environment.e2e.android.ts 463 bytes [built] [code generated]
webpack 5.49.0 compiled successfully in 8903 ms
Webpack compilation complete.
nativescript-plugin-firebase: /Users/chenj49/git/git_gs-linemo-native-app/native-app/platforms/android/.pluginfirebaseinfo not found, forcing prepare!
nativescript-plugin-firebase: running release build or change in environment detected, forcing prepare!
@nativescript-community/licenses:

@nativescript-community/licenses: > Configure project :app

@nativescript-community/licenses:        + setting applicationId

@nativescript-community/licenses:        + couldn't load user-defined configuration from /Users/chenj49/git/git_gs-linemo-native-app/native-app/app/App_Resources/Android/app.gradle. File doesn't exist.

@nativescript-community/licenses:        + using android X library androidx.legacy:legacy-support-v4:1.0.0

@nativescript-community/licenses:        + adding nativescript runtime package dependency: nativescript-optimized-with-inspector

@nativescript-community/licenses:        + adding aar plugin dependency<EMAIL_ADDRESS>         + adding aar plugin dependency<EMAIL_ADDRESS>
@nativescript-community/licenses:
> Task :app:generateLicenseReport

@nativescript-community/licenses: 1 actionable task: 1 executed

child process exited with code 0
Updating runtime package.json with configuration values...
Project successfully prepared (android)
Configure firebase
Copy /Users/chenj49/git/git_gs-linemo-native-app/native-app/App_Resources/Android/google-services.json to /Users/chenj49/git/git_gs-linemo-native-app/native-app/platforms/android/app/google-services.json.
Building project...
Gradle build...
         + setting applicationId
         + applying user-defined configuration from /Users/chenj49/git/git_gs-linemo-native-app/native-app/App_Resources/Android/app.gradle
         + using android X library androidx.legacy:legacy-support-v4:1.0.0
         + adding nativescript runtime package dependency: nativescript-optimized-with-inspector
         + adding aar plugin dependency<EMAIL_ADDRESS>         + adding aar plugin dependency<EMAIL_ADDRESS>Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Project successfully built.
The build result is located at: /Users/chenj49/git/git_gs-linemo-native-app/native-app/platforms/android/app/build/outputs/apk/debug/app-debug.apk

The following log is output when build android package fail.
$ npm run package:android

><EMAIL_ADDRESS>package:android /Users/chenj49/git/git_gs-linemo-native-app/native-app
> ns build android --env.replace=./environments/environment.ts:./environments/environment.e2e.android.ts

Copying template files...
Platform android successfully added. v8.0.0
Preparing project...
DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue($color) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
75 │     $color-brightness: round((red($color) * 299) + (green($color) * 587) + (blue($color) * 114) / 1000);
   │                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>75:76  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue(#ffffff) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
76 │     $light-color: round((red(#ffffff) * 299) + (green(#ffffff) * 587) + (blue(#ffffff) * 114) / 1000);
   │                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>76:73  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div($light-color, 1.7)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
78 │     @return abs($color-brightness) < ($light-color / 1.7);
   │                                       ^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>78:39  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>66:23   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 3:9                                                    root stylesheet

assets by path images/*.png 123 KiB 13 assets
assets by path fonts/ 10.4 MiB
  assets by path fonts/*.ttf 385 KiB
    asset fonts/fa-solid-900.ttf 204 KiB [emitted] [from: app/fonts/fa-solid-900.ttf] [copied]
    asset fonts/fa-brands-400.ttf 131 KiB [emitted] [from: app/fonts/fa-brands-400.ttf] [copied]
    asset fonts/fa-regular-400.ttf 39.1 KiB [emitted] [from: app/fonts/fa-regular-400.ttf] [copied]
    asset fonts/wing-icon.ttf 10.9 KiB [emitted] [from: app/fonts/wing-icon.ttf] [copied]
  assets by path fonts/*.otf 10.1 MiB
    asset fonts/NotoSansJP-Bold.otf 4.47 MiB [emitted] [from: app/fonts/NotoSansJP-Bold.otf] [copied]
    asset fonts/NotoSansJP-Regular.otf 4.34 MiB [emitted] [from: app/fonts/NotoSansJP-Regular.otf] [copied]
    asset fonts/fa5-regular-400.otf 1.24 MiB [emitted] [from: app/fonts/fa5-regular-400.otf] [copied]
assets by path *.js 11.2 MiB
  asset vendor.js 10 MiB [emitted] (name: vendor) (id hint: defaultVendor)
  asset bundle.js 1.14 MiB [emitted] (name: bundle)
  asset runtime.js 13.7 KiB [emitted] (name: runtime)
Entrypoint bundle 11.2 MiB = runtime.js 13.7 KiB vendor.js 10 MiB bundle.js 1.14 MiB
runtime modules 2.84 KiB 9 modules
orphan modules 542 bytes [orphan] 7 modules
modules by path ./node_modules/ 3.73 MiB 381 modules
modules by path ./app/ 374 KiB
  modules by path ./app/pages/*.vue 147 KiB 73 modules
  modules by path ./app/components/*.vue 17.1 KiB 21 modules
  modules by path ./app/styles/*.scss 38.2 KiB 14 modules
  modules by path ./app/utils/*.ts 24.2 KiB 6 modules
  modules by path ./app/store/*.ts 5.96 KiB 3 modules
  modules by path ./app/exception/*.ts 9.23 KiB 3 modules
  3 modules
modules by path external "~/*.json" 84 bytes
  external "~/licenses.json" 42 bytes [built] [code generated]
  external "~/package.json" 42 bytes [optional] [built] [code generated]
./environments/environment.e2e.android.ts 463 bytes [built] [code generated]
webpack 5.49.0 compiled successfully in 9825 ms
Webpack compilation complete.
nativescript-plugin-firebase: /Users/chenj49/git/git_gs-linemo-native-app/native-app/platforms/android/.pluginfirebaseinfo not found, forcing prepare!
nativescript-plugin-firebase: running release build or change in environment detected, forcing prepare!
Built aar for @nativescript/firebase
@nativescript-community/licenses:

@nativescript-community/licenses: > Configure project :app

@nativescript-community/licenses:        + setting applicationId

@nativescript-community/licenses: Script<EMAIL_ADDRESS>line: 96
@nativescript-community/licenses:
A problem occurred evaluating script.

@nativescript-community/licenses: Plugin with id 'com.google.gms.google-services' not found.
@nativescript-community/licenses:

child process exited with code 1
Error: generateLicenseReport failed
    at ChildProcess.<anonymous> (/Users/chenj49/git/git_gs-linemo-native-app/native-app/node_modules/@nativescript-community/licenses/scripts/after-prepareNativeApp.js:46:28)
    at ChildProcess.emit (events.js:376:20)
    at maybeClose (internal/child_process.js:1055:16)
    at Socket.<anonymous> (internal/child_process.js:441:11)
    at Socket.emit (events.js:376:20)
    at Pipe.<anonymous> (net.js:673:12)
generateLicenseReport failed
npm ERR! code ELIFECYCLE
npm ERR! syscall spawn
npm ERR! file sh
npm ERR! errno ENOENT
npm ERR<EMAIL_ADDRESS>package:android: `ns build android --env.replace=./environments/environment.ts:./environments/environment.e2e.android.ts`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the<EMAIL_ADDRESS>package:android script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR!      /Users/chenj49/.npm/_logs/2021-08-07T07_55_35_353Z-debug.log

I found the fail and succeed pattern.

rm -rf ./hooks ./platforms ./node_modules
npm ci
build android → fail

rm -rf ./hooks ./platforms ./node_modules
npm ci
build ios → succeed
build android → fail

rm -rf ./hooks ./platforms ./node_modules
npm ci
build android → fail
build ios → succeed
build android → succeed
I also noticed that if app.grade is not found,
@nativescript-community/licenses will using android X library androidx.legacy:legacy-support-v4:1.0.0.
Maybe this is a hint.

@coolboy0961 I think the best would be for to try with a sample app without @nativescript/firebase. If you can reproduce it there it would be easier for me to fix it. There might be indeed an issue with the path

@coolboy0961
OK, I will create a sample app to reproduce the problem.

@farfromrefug
I created the sample app to reproduce the problem, could you clone it?
https://github.com/coolboy0961/sample-app-for-reproduce.git
The steps to  confirm build android successfully without install @nativescript/firebase

ns build android

The steps to reproduce the android license build error

install @nativescript/firebase with default settings.

$ ns plugin add @nativescript/firebase
npm WARN deprecated<EMAIL_ADDRESS>I wrote this module a very long time ago; you should use something else.
npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.
Install google-service.json after-prepare copy hook.
Install google-service.json before-checkForChanges copy hook.
Successfully created Android (include.gradle) file.
Install google-service.json after-prepare copy hook.
Install google-service.json before-checkForChanges copy hook.
Firebase post install completed. To re-run this script, navigate to the root directory of `nativescript-plugin-firebase` in your `node_modules` folder and run: `npm run config`.
prompt: Do you want to save the selected configuration. Reinstalling the dependency will reuse the setup from: firebase.nativescript.json. CI will be easier. (y/n):  (y)
+<EMAIL_ADDRESS>added 22 packages from 35 contributors and audited 422 packages in 24.922s

40 packages are looking for funding
  run `npm fund` for details

found 4 vulnerabilities (2 low, 2 moderate)
  run `npm audit fix` to fix them, or `npm audit` for details
Successfully installed plugin @nativescript/firebase.

ns build android

$ ns build android
Preparing project...
DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue($color) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
75 │     $color-brightness: round((red($color) * 299) + (green($color) * 587) + (blue($color) * 114) / 1000);
   │                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>75:76  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>56:11   @import
<EMAIL_ADDRESS>2:9      @import
    app/components/Home.vue 31:9                                        root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue(#ffffff) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
76 │     $light-color: round((red(#ffffff) * 299) + (green(#ffffff) * 587) + (blue(#ffffff) * 114) / 1000);
   │                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>76:73  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>56:11   @import
<EMAIL_ADDRESS>2:9      @import
    app/components/Home.vue 31:9                                        root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div($light-color, 1.7)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
78 │     @return abs($color-brightness) < ($light-color / 1.7);
   │                                       ^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>78:39  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>56:11   @import
<EMAIL_ADDRESS>2:9      @import
    app/components/Home.vue 31:9                                        root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue($color) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
75 │     $color-brightness: round((red($color) * 299) + (green($color) * 587) + (blue($color) * 114) / 1000);
   │                                                                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>75:76  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>56:11   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 1:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div(blue(#ffffff) * 114, 1000)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
76 │     $light-color: round((red(#ffffff) * 299) + (green(#ffffff) * 587) + (blue(#ffffff) * 114) / 1000);
   │                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>76:73  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>56:11   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 1:9                                                    root stylesheet

DEPRECATION WARNING: Using / for division is deprecated and will be removed in Dart Sass 2.0.0.

Recommendation: math.div($light-color, 1.7)

More info and automated migrator: https://sass-lang.com/d/slash-div

   ╷
78 │     @return abs($color-brightness) < ($light-color / 1.7);
   │                                       ^^^^^^^^^^^^^^^^^^
   ╵
<EMAIL_ADDRESS>78:39  check-contrast()
<EMAIL_ADDRESS>84:49  alternate()
<EMAIL_ADDRESS>56:11   @import
<EMAIL_ADDRESS>2:9          @import
<EMAIL_ADDRESS>8:9                      @import
    app/app.scss 1:9                                                    root stylesheet

assets by status 6.87 MiB [emitted]
  asset vendor.js 6.51 MiB [emitted] (name: vendor) (id hint: defaultVendor)
  asset bundle.js 351 KiB [emitted] (name: bundle)
  asset runtime.js 12.9 KiB [emitted] (name: runtime)
assets by status 374 KiB [compared for emit]
  asset fonts/fa-solid-900.ttf 204 KiB [compared for emit] [from: app/fonts/fa-solid-900.ttf] [copied]
  asset fonts/fa-brands-400.ttf 131 KiB [compared for emit] [from: app/fonts/fa-brands-400.ttf] [copied]
  asset fonts/fa-regular-400.ttf 39.1 KiB [compared for emit] [from: app/fonts/fa-regular-400.ttf] [copied]
Entrypoint bundle 6.87 MiB = runtime.js 12.9 KiB vendor.js 6.51 MiB bundle.js 351 KiB
runtime modules 2.72 KiB 8 modules
orphan modules 356 bytes [orphan] 6 modules
modules by path ./node_modules/@nativescript/core/ 1.4 MiB 162 modules
modules by path ./node_modules/css-tree/ 318 KiB 113 modules
modules by path ./app/ 128 KiB 9 modules
modules by path ./node_modules/source-map/lib/*.js 38.2 KiB 6 modules
modules by path ./node_modules/reduce-css-calc/dist/ 131 KiB
  modules by path ./node_modules/reduce-css-calc/dist/lib/*.js 11.1 KiB 3 modules
  modules by path ./node_modules/reduce-css-calc/dist/*.js 120 KiB 2 modules
modules by path ./node_modules/postcss-value-parser/lib/*.js 9.11 KiB 5 modules
modules by path ./node_modules/mdn-data/css/*.json 242 KiB 3 modules
modules by path external "~/*.json" 84 bytes
  external "~/licenses.json" 42 bytes [built] [code generated]
  external "~/package.json" 42 bytes [optional] [built] [code generated]
4 modules
webpack 5.49.0 compiled successfully in 6834 ms
Webpack compilation complete.
nativescript-plugin-firebase: /Users/chenj49/git/sample-app-reproduce-license/platforms/android/.pluginfirebaseinfo not found, forcing prepare!
nativescript-plugin-firebase: running release build or change in environment detected, forcing prepare!
Built aar for @nativescript/firebase
@nativescript-community/licenses:

@nativescript-community/licenses: > Configure project :app

@nativescript-community/licenses:        + setting applicationId

@nativescript-community/licenses: Script<EMAIL_ADDRESS>line: 96

@nativescript-community/licenses: A problem occurred evaluating script.

@nativescript-community/licenses: Plugin with id 'com.google.gms.google-services' not found.

@nativescript-community/licenses:

child process exited with code 1
Error: generateLicenseReport failed
    at ChildProcess.<anonymous> (/Users/chenj49/git/sample-app-reproduce-license/node_modules/@nativescript-community/licenses/scripts/after-prepareNativeApp.js:46:28)
    at ChildProcess.emit (events.js:376:20)
    at maybeClose (internal/child_process.js:1055:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:288:5)
generateLicenseReport failed

Appendix:
the steps for creating sample app
ns create sample-app-reproduce-license --vue --ts
cd sample-app-reproduce-license
ns plugin add @nativescript-community/licenses
ns plugin add @nativescript-community/ui-lottie

add Podfile at App_Resource/iOS/Podfile

# FIX [The iOS Simulator deployment target 'IPHONEOS_DEPLOYMENT_TARGET' is set to 8.0] warnning log
post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
    end
  end
end

add external setting to webpack.config.js

const webpack = require("@nativescript/webpack");

module.exports = (env) => {
	webpack.init(env);

	// Learn how to customize:
	// https://docs.nativescript.org/webpack
	webpack.chainWebpack((config) => {
    config.externals(
      // make sure to keep pre-defined externals
      config.get("externals").concat([
        // add your own externals
        "~/licenses.json",
      ])
    );
  });

	return webpack.resolveConfig();
};

@coolboy0961 s you confirmed this is an issue with the firebase plugin?  There is no way for me to ensure it would work :s
If i understood wrong and it still fails without the firebase plugin, ping me again!

@farfromrefug
your plugin works well without the firebase plugin.
I also confirmed that the firebase plugin add something in platform/android/app.grade like following image when I executed ios build.

I will not ask you to change the firebase plugin but is there anyway to let the hook of @nativescript-community/licenses execute at the end of hooks?
I manually add the things which is add by the firebase plugin automatically into the app.grade  and then android build succeed.
So, I think if I can let the firebase plugin change app.grade first, the hook of @nativescript-community/licenses should execute successfully.

@coolboy0961 First there is no "order" in hooks so we cant set that. Second the order wont change anything as my hook does NOT modify the app.gradle.
My hook simply injects itself at gradle build time through include.gradle. I dont know  what firebase does and why the order would change anything.


CAMEL-13320 - DirectMessageConsumerHandler.java pollConsume method ca…

…lls deprecated Twitter.getDirectMessages(Paging p)
https://issues.apache.org/jira/browse/CAMEL-13320

Thanks, merged on master, camel-2.x, camel-2.23.x and camel-2.22.x

Would it feasible to merge to camel-2.21.x too, as syndesis depends on this version.


Update Redis template to support password

We use "requirepass"/"masterauth" for our Redis configuration, and need to be able to provide a password for the Sensu Redis configuration so that it is able to authenticate with our Redis cluster.

https://github.com/sstarcher/docker-sensu/commit/7d18fe3eaedc446b5e78b376dc84b797c738471b


Provide download URLs for tarballs

Title:
Provide download URLs for tarballs
Description:
Right now, "getenvoy" has to redundantly build envoy in order to provide download urls to binaries. This is unnecessary work and leads to confusion as to what is official.  Right now there are few good choices, whether it is curl, or version managers that operate like nvm, pyenv, gimme, jabba etc (specifically the getenvoy CLI). Helper scripts or tools either build redundantly to what envoy already does, or do hacks like extract the binary from the docker images.
The current state here is that Azure pipeline jobs produce Docker images. To do this, they execute builds and create intermediate binaries. Once the Docker images are complete, these binaries are not retained. If these binaries weren't dropped on the floor, others could reference "official" builds.
The following docker "platforms" would be ideal to publish as tarballs for latest patches of non EOL versions:
linux/amd64
linux/arm64
darwin/amd64
darwin/arm64
windows/amd64
The ideal tarball would be "tar.xz" not "tar.gz" as the former is significantly less storage and bandwidth. However, .gz is fine. The ideal tarball would have a base directory including the envoy version, ex "envoy-1.18.3" and minimally the envoy binary. Ex "envoy-1.18.3/bin/envoy". There have been requests for other contents as well, but this would get things started and deprecate custom builds getenvoy is doing. It would also be nice to have a checksum files or literal for each tarball, regardless of the hash algo.
Once this is complete, "getenvoy cli" would prefer upstream builds and ideally be able to stop building envoy. A potential gap is around the aggressive EOL policy. We've heard users as recent as last week pinned to 1.12. If all versions are available, we can remove custom build download URLs and mention the official ones for all releases.
Other things like RPMs could be follow-up or independent issues. Hope this helps gets the wheels turning!
Relevant Links:
schema of the "getenvoy" version manager CLI: https://github.com/tetratelabs/getenvoy/blob/master/site/envoy-versions-schema.json
current contents we'd like to replace with "official" tarballs: https://github.com/tetratelabs/getenvoy/blob/master/site/envoy-versions.json

I reworded the description hopefully for better context. I also linked a bunch of issues that lack of these tarballs cause. Looking forward to a canonical tarball!

cc @mattklein123 @caniszczyk

iiuc this ticket relates specifically to the envoy executable - rather than eg docker images, which as i understand getenvoy also provides, or the getenvoy cli itself
it seems fairly straightforward from perspective of Envoy's CI to create the required xz format and to publish it somewhere
obv we could create this on an ongoing basis - ie to create a dev version on each postsubmit ci run. For specific/stable versions we would probably want to incorporate this as part of the release process.
one option that im wondering about is whether we can just host these on github as a tagged/release download
this has the advantage that its published alongside the source code for each version, and potentially could be incorporated relatively easily into Envoy's existing release process
the other option im  wondering about is hosting on the envoy website itself - ie where docs are hosted
i would anticipate that this is likely to see a lot of traffic, and im not clear whether the current hosting would stand up well to that.
either way we would probably also want to link to downloads wherever they are host from the the envoy website - and i guess update the existing installation docs
a related question im wondering about is for historical versions. Checking the links posted above these just have the "latest" for each minor version - which means we could just create a new patch release for all the current supported minor versions to include the downloads.
some of the discussion offline was regarding older - ie no longer supported versions. If we were to produce tarballs for these also we would need to decide whether to create a new release for these - or potentially how to backport a download for them

Thanks for the analysis @phlax! I think that binary availability tied to GitHub is a relatively understood process which many tools already use. As long as there are checksums, if someone wanted to mirror those elsewhere they could, including this project!
I withheld a little detail until wheels turned, but in the description I eluded to the binary being ok, but some might want a wee bit more in the tar.xz.  We've had requests for debug symbols and also tools. I don't want to distract from the most primary goal (/bin/envoy), but this may be a good time to mention the other bits requested.

Thanks for raising this. A couple of high level comments:

We have an ongoing number of requests for binaries/images/etc. of different types. While we want to satisfy everyone, generating official binaries/images/etc. is a lot of work that we don't have a large amount of resources for.
There are potential legal issues that we need to clear for serving different binaries/images/etc. from different locations (GH, CNCF owned site, somewhere else, etc.)

There is a long-winded way of saying: I don't know what we can do here and we don't have a lot of resources to do it. With that said, a few more things:

We are going to be migrating GetEnvoy into the CNCF. @phlax is going to be leading this effort.
I would suggest we finish (1), and then revisit this issue. Completing that will give us more flexibility into which artifacts we host, where we host them, and make sure we have good synergy across the board.

I'm going to assign this issue to @phlax and we can mark this help wanted for now.

it would definitely be good to clarify end goals re shifting getenvoy -> CNCF, and i understand that this throws up a number of questions in terms of infrastructure as well as round legal and IP issues
i would say, however, that this seems like both a relatively quick win in terms of bringing the authoritative builds in-house and the first step on the path towards the goal of migrating getenvoy however that comes to be defined
i think hosting the binaries on github resolves at least some of the hosting/infrastructure issues, and once the CI is put in place for this i dont foresee it taking up a lot of resources - at most, a slightly altered release workflow

I would like to add my Vote for this please. More and more we are using arm hardware and it would be good to be able to use envoy on these servers.

I would like to add my Vote for this please. More and more we are using arm hardware and it would be good to be able to use envoy on these servers.

I hear you, but to keep these conversations focused, pedantically you can use Envoy on those servers. We ship ARM docker images right now, and you can of course build your own binaries if you don't like the ones we provide.

hopefully we should have the process in place for publishing the tarballs to github by the next release

should be noted that centos 7 based distributions are still widely in use, so builds in the tarballs should accommodate this, or some sort of clear support matrix be included to say it isn't.


modify flow content

i changed the way to edit the flow content, what do you think? i had problems with dependencies when i tried to replace rea with react-codemirror or react-code-mirror. i will try this tomorrow.


Major / minor updates slightly wrongly worded

Hey
It's a small thing, but the use of major/minor in terms of updates isn't quite right.  A major update would be from 5.x to 6.x versus a minor update being from 5.6 to 5.7 - whereas if I understand correctly you patch for version numbers within the release series.

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

ID: 16a0fea2-7a46-fb56-91ba-824d9ca40fbe
Version Independent ID: 14fbe81f-58fe-3b41-468a-160d293583c8
Content: Supported versions in Azure Database for MySQL
Content Source: articles/mysql/concepts-supported-versions.md
Service: mysql
GitHub Login: @ajlam
Microsoft Alias: andrela

Thanks for the feedback! We are currently investigating and will update you shortly.

I have assigned the issue to the content author to evaluate and update as appropriate.

@timhiggs, thanks for the feedback. In this case, MySQL 5.6 and 5.7 are considered major versions. The minor versions are 5.6.x and 5.7.x.
As you can see in the screenshot below, the previous GA versions of MySQL are 5.5, 5.6, and 5.7.

ref: https://dev.mysql.com/downloads/mysql/
The current GA version of MySQL is 8.0.

@timhiggs, do you have any other questions? Otherwise, I will proceed to close this issue.

I agree with @timhiggs . You guys should use the pretty well established convention of:  Major.Minor.Patch
More details here: https://semver.org
Referring to going from v5.6 to v5.7 as being a "major version upgrade" will likely cause confusion.

Apologies - seems I missed a couple of update messages related to this.  Yes, it was mostly just to avoid this confusion - as an upgrade from 5.6 to 5.7 is a minor MySQL version upgrade, regardless of it being an upgrade from one GA version to another.
https://dev.mysql.com/doc/refman/5.7/en/which-version.html

Hi all, the doc changes should have been published earlier this morning. Thanks for the feedback!

No problem :) Thank you!

Is there a plan for mysql 8 ?


Check field with optional chaining operator in union types

TypeScript Version: 3.7.2
I'm seeing incorrect behavior when I trying to use optional chaining operator in union type. Instead of writing boilerplate code for using field with optional chaining operator  I'm seeing use short construction. But...
Code

type OneField = {
    id: string;
}
type TwoField = {
    id: string;
    data: string;
}
function someWork(owner: OneField | TwoField) {
    if (owner.data?.length) { // Property 'data' does not exist on type 'OneField | TwoField'.
        console.log(owner.data);
    }
    // instead of
    // if ("data" in owner && owner.data?.length) {
    //     console.log(owner.data);
    // }
}

Search Terms
chaining operator, use field
Suggestion
Short construction for use field with optional chaining operator in union is available

While this definitely would be useful, I would expand it out to union access in more contexts if it were implemented. For example, following the same logic, the compiler could allow access to non-common members in conditionals and use it as  a type guard :
function someWork(owner: OneField | TwoField) {
    if (owner.data) {
        console.log(owner.data);
    }
}

Playground Link
One could go further and allow access in any context to non-common members by adding an | undefiend  to such uncommon properties. (ie owner.data is always a valid access, but owner.data is of type string | undefined)
Just one note, creating a type to transform a union in such a way to allow the code in the original example, is trivial, and the original union is even still compatible with this new type:
type OneField = {
    id: string;
}
type TwoField = {
    id: string;
    data: string;
}
type MakeAllUnionHaveAllFieldsHelper<T, KAll extends PropertyKey> =
    T extends T ? T & Partial<Record<Exclude<KAll, keyof T>, undefined>> :
    never;

type AllKeys<T> = T extends T ? keyof T : never;
type MakeAllUnionHaveAllFields<T> = MakeAllUnionHaveAllFieldsHelper<T, AllKeys<T>>

function someWork(owner: MakeAllUnionHaveAllFields<OneField | TwoField>) {
    if (owner.data?.length) {
        console.log(owner.data);
    }
}

declare let o: OneField | TwoField;
someWork(o)/// Comaptible

Duplicate of the (declined 😿 ) #33736

This is a correct error because the code is unsound; you have to account for the possibility of aliasing:
type OneField = {
    id: string;
}
type TwoField = {
    id: string;
    data: string;
}
function someWork(owner: OneField | TwoField) {
    if (owner.data?.length) { // Property 'data' does not exist on type 'OneField | TwoField'.
        // alleged to be OK
        console.log(owner.data.toLowerCase());
    }
    // instead of
    // if ("data" in owner && owner.data?.length) {
    //     console.log(owner.data);
    // }
}

const obj = { id: "", data: 42 };
const alias: OneField = obj;
// Crashes
someWork(alias);

@RyanCavanaugh Doesn't TypeScript have enough information there to know that data is a number and not a string at the call site? It could throw an error for that case, then optional chaining would be totally useful!
These are the sorts of discussions Hegel.js is having. And I think it would be worthwhile to investigate such concepts (f.e. type checking based on usage sites, not just static information from the type definitions).
For example, instead of
// thing is type Foo | Bar, and only Bar has method()
if (foo instanceof Bar) {
  foo.method()
}

we can just write
foo.method?.()

which is a lot cleaner.
Also maybe TypeScript can investigate a discriminated operator or built-in type or something:
type Foo = discriminated OneField | TwoField

function foo(foo: discriminated OneField | TwoField) {}

where discriminated causes things to behave more nominally than duckish. New strict options could enforce these things. I think many people would prefer more strictness in various ways.

@RyanCavanaugh Doesn't TypeScript have enough information there to know that data is a number and not a string at the call site? It could throw an error for that case, then optional chaining would be totally useful!
These are the sorts of discussions Hegel.js is having. And I think it would be worthwhile to investigate such concepts (f.e. type checking based on usage sites, not just static information from the type definitions).
For example, instead of
// thing is type Foo | Bar, and only Bar has method()
if (foo instanceof Bar) {
  foo.method()
}

we can just write
foo.method?.()

which is a lot cleaner.
Also maybe TypeScript can investigate a discriminated operator or built-in type or something:
type Foo = discriminated OneField | TwoField

function foo(foo: discriminated OneField | TwoField) {}

where discriminated causes things to behave more nominally than duckish. New strict options could enforce these things. I think many people would prefer more strictness in various ways.

Doesn't TypeScript have enough information there to know that data is a number and not a string at the call site? It could throw an error for that case, then optional chaining would be totally useful!

No, it doesn't. It only knows that alias has an id: number property.

Doesn't TypeScript have enough information there to know that data is a number and not a string at the call site? It could throw an error for that case, then optional chaining would be totally useful!

No, it doesn't. It only knows that alias has an id: number property.


fix: Handle invalid git ignore globs gracefully

If we fail to build a regex from an ignore glob, we now:

log the glob
filter the glob out and continue

Agree with @kgilpin. If don't need this exceptions for analytics (I guess we don't) we can just silently skip.

I'd like to know what pattern is raising an exception, because I see no reason we should be failing here. With that data, we can issue a proper fix.

I'll address this in a different manner that replaces globToRegExp outright.


Update third parties to latest

Oh. Wow! Many thanks @data-man. I know it's just a little PR, but I really appreciate that. Many thanks!
NB: You're adding/removing some includes. How did you decided  to do that? What Compiler did you maybe use that has been hinting that?

@data-man I was just merging a huge branch into master. So this is why I was updating your branch to be rebased on top of latest master, FYI. When tests get green (the important ones), I'll merge. :)

How did you decided to do that?

/home/dataman/Projects/C/-Terminals/contour_test/src/crispy/debuglog.h: In function ‘crispy::debugtag::tag_id crispy::debugtag::make(std::string_view, std::string_view, bool)’:
/home/dataman/Projects/C/-Terminals/contour_test/src/crispy/debuglog.h:105:9: error: ‘assert’ was not declared in this scope
  105 |         assert(crispy::none_of(store(), [&](tag_info const& x) { return x.name == _name; }));
      |         ^~~~~~
/home/dataman/Projects/C/-Terminals/contour_test/src/crispy/debuglog.h:39:1: note: ‘assert’ is defined in header ‘<cassert>’; did you forget to ‘#include <cassert>’?
   38 |         #include <experimental/source_location>
  +++ |+#include <cassert>
   39 |         #define CRISPY_SOURCE_LOCATION 1
make[2]: *** [src/crispy/CMakeFiles/crispy-core.dir/build.make:76: src/crispy/CMakeFiles/crispy-core.dir/App.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:588: src/crispy/CMakeFiles/crispy-core.dir/all] Error 2

The same reason for other files (gcc 11.1.0).

Reased and force-pushed, but

First-time contributors need a maintainer to approve running workflows

:smile:

Many thanks, @data-man :)


Removed deprecated need_ids column from Editions

This is the final step in removing any reference to using the Needs API in whitehall. The actual work of disconnecting Needs API and converting needs into content items that can be fetched from the Publishing API was done in a previous PR: https://github.com/alphagov/whitehall/pull/3071.
This commit is only concerned with dropping the now unused need_ids column from the Editions table.

Merge when green


Allow user to provide a KMS key to encrypt S3 content

This PR allows users to provide a KMS key to encrypt data at rest in S3. More importantly, the IAM role for the KB is granted decrypt access to the key for the purposes of ingesting content. The IAM permissions present in this PR match the specific policy generated by the AWS Console wizard for KB creation.
(This is a duplicate of PR 27 which was closed due to pre-commit difficulties)

Side note:  Figured out why this PR (and PR 27) were failing.  For reasons, can't install pre-commit in this repo and so was running latest terraform-docs.  There's a bug fix in the latest version compared to the frozen version in pre-commit.

/do-e2e-tests


support for custom resource

How to add a custom resource to the system? I want to create a new structuredefinition to reprasent some custom resource and would want to get FHIR operations done on that resouce.

If you are looking to implement your own resource type, you should first look at the Basic resource, and then you should create a Profile and post that profile to the IBM FHIR Server to constrain the behavior of the basic resource using a Profile. You would then use the Basic endpoint to post the resource and subsequently constrain the resource to meet your needs.

Per discussion with the team, this would be above and beyond what the spec supports.  Today we recommend you profile the Basic resource.


The semantic_embedding and spatic_embedding types.

Hi, it is a great work for VQA. I did't download the datasets. So I want to konw the types of semantic_embedding and spatic_embedding, are they one-hot embedding or word embedding or extract features from model? I'm looking forward you reply, thanks!

Hi, thanks for your interests in this work and sorry for the late reply. They are one-hot embeddings.

Hi, thanks for your interests in this work and sorry for the late reply. They are one-hot embeddings.

Dear scholar,
Did your code pos_embedding.py show the same type id num like the below picture?

Dear scholar,
                    y_diff = center_y[i] - center_y[j]
                    x_diff = center_x[i] - center_x[j]
                    diag = math.sqrt((y_diff)**2 + (x_diff)**2)
                    if diag < 0.5 * image_diag:
                        sin_ij = y_diff/diag
                        cos_ij = x_diff/diag
                        if sin_ij >= 0 and cos_ij >= 0:
                            label_i = np.arcsin(sin_ij)
                            label_j = 2*math.pi - label_i
                        elif sin_ij < 0 and cos_ij >= 0:
                            label_i = np.arcsin(sin_ij)+2*math.pi
                            label_j = label_i - math.pi
                        elif sin_ij >= 0 and cos_ij < 0:
                            label_i = np.arccos(cos_ij)
                            label_j = 2*math.pi - label_i
                        else:
                            label_i = -np.arccos(sin_ij)+2*math.pi
                            label_j = label_i - math.pi
                        adj_matrix[i, j] = int(np.ceil(label_i/(math.pi/4)))+3
                        adj_matrix[j, i] = int(np.ceil(label_j/(math.pi/4)))+3

But I think if obey the below picture type id num , maybe the following
                        if sin_ij >= 0 and cos_ij >= 0:# j is in the second Quadrant, i is the reference center
                            label_i = math.pi - np.arcsin(sin_ij)
                            label_j = 2*math.pi - np.arcsin(sin_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        elif sin_ij < 0 and cos_ij >= 0:#j is in  the third Quadrant, i is the reference center
                            label_i = -np.arcsin(sin_ij)+math.pi
                            label_j = np.arccos(cos_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        elif sin_ij >= 0 and cos_ij < 0: #j is in the first Quadrant, i is the reference center
                            label_i = np.arcsin(sin_ij)
                            label_j = math.pi + np.arcsin(sin_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        else:# j is in the fourth Quadrant, i is the reference center
                            label_i = np.arcsin(sin_ij)+2*math.pi
                            label_j = math.pi + np.arcsin(sin_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        adj_matrix[i, j] = int(np.ceil(label_i/(math.pi/4)))+3
                        adj_matrix[j, i] = int(np.ceil(label_j/(math.pi/4)))+3

Dear scholar ,
And I  test the first image "COCO_train2014_000000262145.jpg" 36 fixed box and the relationship. And I found it could be not the same as the below picture

In your code. the self-loop type is 3, that is intersection. but if I set the i box as the id 0 box. And the other box id is the j box.

0: wearing,
1: holding,
2: sitting on,
3: standing on,
4: riding,
5:eating,
6:hanging from,
7:carrying,
8:attached to, 9: walking on,
10: playing,
11:covering,
12: lying on, 13:watching,
14:looking at
the relation is  4: riding, 10: playing I think it must be my error but I don't know where the error is .

Dear scholar, This is your code in pos_emb.py
                    y_diff = center_y[i] - center_y[j]
                    x_diff = center_x[i] - center_x[j]
                    diag = math.sqrt((y_diff)**2 + (x_diff)**2)
                    if diag < 0.5 * image_diag:
                        sin_ij = y_diff/diag
                        cos_ij = x_diff/diag
                        if sin_ij >= 0 and cos_ij >= 0:
                            label_i = np.arcsin(sin_ij)
                            label_j = 2*math.pi - label_i
                        elif sin_ij < 0 and cos_ij >= 0:
                            label_i = np.arcsin(sin_ij)+2*math.pi
                            label_j = label_i - math.pi
                        elif sin_ij >= 0 and cos_ij < 0:
                            label_i = np.arccos(cos_ij)
                            label_j = 2*math.pi - label_i
                        else:
                            label_i = -np.arccos(sin_ij)+2*math.pi
                            label_j = label_i - math.pi
                        adj_matrix[i, j] = int(np.ceil(label_i/(math.pi/4)))+3
                        adj_matrix[j, i] = int(np.ceil(label_j/(math.pi/4)))+3

But I think if obey the below picture type id num , maybe the following
                        if sin_ij >= 0 and cos_ij >= 0:# j is in the second Quadrant, i is the reference center
                            label_i = math.pi - np.arcsin(sin_ij)
                            label_j = 2*math.pi - np.arcsin(sin_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        elif sin_ij < 0 and cos_ij >= 0:#j is in  the third Quadrant, i is the reference center
                            label_i = -np.arcsin(sin_ij)+math.pi
                            label_j = np.arccos(cos_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        elif sin_ij >= 0 and cos_ij < 0: #j is in the first Quadrant, i is the reference center
                            label_i = np.arcsin(sin_ij)
                            label_j = math.pi + np.arcsin(sin_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        else:# j is in the fourth Quadrant, i is the reference center
                            label_i = np.arcsin(sin_ij)+2*math.pi
                            label_j = math.pi + np.arcsin(sin_ij)
                            print(math.degrees(label_i))
                            print(math.degrees(label_j))
                        adj_matrix[i, j] = int(np.ceil(label_i/(math.pi/4)))+3
                        adj_matrix[j, i] = int(np.ceil(label_j/(math.pi/4)))+3

Hi, thanks for your interests in this work and sorry for the late reply. They are one-hot embeddings.

For spatial relations, as we do not use their semantic meaning during graph attention. The order of the labels do not matter.

Dear scholar ,
And I test the first image "COCO_train2014_000000262145.jpg" 36 fixed box and the relationship. And I found it could be not the same as the below picture

In your code. the self-loop type is 3, that is overlap. but if I set the i box as the id 0 box. And the other box id is the j box.

Remember that our semantic relation labels are predictions from a neural network, so the labels are not ground truth labels, which means there are very likely to be mistakes. Also, can you remind me where did you get the label to relation mapping? It has been a while since I worked on this project, just want to make sure that we are on the same page.

Thanks for your timely reply. The semantic matrix is also from your file "train36.hdf5"
And I got the imageid from the "imgids/train36_imgid2idx.pkl" I think the first imageid will correspond to the first semantic matrix.
The first image in the "train36_imgid2idx.pkl "is  "COCO_train2014_000000262145.jpg"
Do you remember the relation id num is the following correspondence ：
0: wearing,
1: holding,
2: sitting on,
3: standing on,
4: riding,
5:eating,
6:hanging from,
7:carrying,
8:attached to, 9: walking on,
10: playing,
11:covering,
12: lying on, 13:watching,
14:looking at
Because I want to utilize your semantic matrix and spatial matrix. So I refer to your train36.h5py

I think maybe the matrix all is provided by peterson, so it maybe not correspond your semantic relationship.


Support recursive merge of settings from *.config.yml

The call to Hash#merge!() in Vagrantfile:44 means that arrays of settings defined in subsequent files (config.yml and local.config.yml) replace the initial set defined in default.config.yml. This is okay for some use-cases but presents a problem when maintaining a set of pre-defined sites for a team.
Here's the scenario:

I forked Drupal VM and updated default.config.yml with my team's default sites. I could also have just added my settings to config.yml and force-committed it to override the .gitignore.
A team member using my fork wants to add a site just for herself and not the whole team.
She copies default.config.yml to either config.yml or local.config.yml and defines her site's synced folder, host, and other settings.
She reprovisions and all's well at first, but then the team adds a new site to the pre-defined set in default.config.yml.
She pulls in the changes but can't see the new site! Why? Because her settings in [local.]config.yml override those in default.config.yml

If Vagrantfile:44 used a recursive merge, such as Hash#deep_merge() or a lighter, custom implementation, the local-only settings would simply add to the existing ones from default.config.yml. What do you think about this?

I guess the main problem if we had a deep merge that also merges arrays is that you cant remove items from installed_extras, which I think is pretty common.

To @oxyc - same thing with node packages, composer global packages, ruby gems, vhosts, etc.
While it may be more convenient in some circumstances, I think merging instead of overriding would make many behaviors more confusing and potentially harder to debug.


Deal with encodings other than UTF8

Whatever is necessary for bpython to work with other encodings (basically ascii). Always use/convert to unicode strings in fmtstring objects? Convert everything to bytes to print to stdout?

Always use unicode.


feat: support to pass multiple Event Notifications instances to Observability DA

Description
issue: https://github.ibm.com/GoldenEye/issues/issues/10928
Added a new input variable cloud_logs_existing_en_instances of type
type = list(object({
    instance_crn        = string
    integration_name    = optional(string, "cloud-logs-en-integration")
    skip_en_auth_policy = optional(bool, false)
  }))

which will allow to pass more than one EN instances, also the previous variables continues to work as discussed in deep dive https://github.ibm.com/GoldenEye/issues/issues/10928#issuecomment-93550079
Release required?

[ ] No release
[ ] Patch release (x.x.X)
[x] Minor release (x.X.x)
[ ] Major release (X.x.x)

Release notes content

Run the pipeline
If the CI pipeline doesn't run when you create the PR, the PR requires a user with GitHub collaborators access to run the pipeline.
Run the CI pipeline when the PR is ready for review and you expect tests to pass. Add a comment to the PR with the following text:
/run pipeline

Checklist for reviewers

[ ] If relevant, a test for the change is included or updated with this PR.
[ ] If relevant, documentation for the change is included or updated with this PR.

For mergers

Use a conventional commit message to set the release level. Follow the guidelines.
Include information that users need to know about the PR in the commit message. The commit message becomes part of the GitHub release notes.
Use the Squash and merge option.

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

/run pipeline

@Soaib024 It seems the TestRunExistingResourcesInstances is trying to enable platform logs, and hence failing with 'CreateTenantWithContext failed: Conflict' - we need to explicitly set enable_platform_logs to false in that test to prevent this

/run pipeline

@Soaib024 I need to priortise getting https://github.com/terraform-ibm-modules/terraform-ibm-observability-da/pull/175 merged first - then this one

@Soaib024 I need to priortise getting #175 merged first - then this one

Sure, but the test has failed again due to the ATracker target quota, so it anyway needs a re-run

@Soaib024 yea thanks we just cleaned up some targets, but have also asked for extension in allowed targets in our account

/run pipeline

/run pipeline

@Soaib024 you need to resolve conflicts first

@Soaib024 you need to resolve conflicts first

I have already resolved the conflicts, but now getting 500 while creating bucket

maybe some problem with github

OK yes it looks good now. Any idea what caused the error in above comment?

Not yet, but terraform apply as well as pipeline is now failing with 500 error from cos

@Soaib024 there must be a bug somewhere. The TestRunExistingResourcesInstances test failed with:
TestRunExistingResourcesInstances 2024-10-10T15:39:55Z retry.go:99: Returning due to fatal error: FatalError{Underlying: error while running command: exit status 1; ╷
│ Error: ---
│ id: terraform-693866e6
│ summary: 'CreateOutgoingWebhookWithContext failed: No authentication information in
│   RequestContext'
│ severity: error
│ resource: ibm_logs_outgoing_webhook
│ operation: create
│ component:
│   name: github.com/IBM-Cloud/terraform-provider-ibm
│   version: 1.69.2
│ ---

The error appears to be intermittent, with the failure rate still higher than success rate. I have a very similar version of this code that passed in the test pipeline, but the same code has both failed and passed multiple times when run locally.

@ocofaigh, I believe the issue was likely from the service team. This pipeline has now passed, as has this one which has very similar code to this pr, and the last three tests I ran locally have also passed successfully.

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

GitHub release
v1.20.0

Your semantic-release bot :package::rocket: