Kubernetes-like resource refactoring

Changes

:gift: implements export functionality to new format
/kind api-change
Fixes #817

Team this is just for discussion and in no way finished, I wanted to create the structs and see where the new types will clash with the old types, for the marshallers and try to understand a bit better the impact of this and future changes.
Right now, with the new structs, we can transform from a go/cloudevents func.yaml file that looks like this:
version: 0.19.0
name: func-test
namespace: ""
runtime: go
registry: ""
image: docker.io/salaboy/func-test:latest
imageDigest: sha256:de1638ddc99288805c748c97e5f9f3592614f8bc26157c732c1375224b021f1f
build: local
git:
  url: null
  revision: null
  contextdir: null
builder: gcr.io/paketo-buildpacks/builder:base
builders:
  base: gcr.io/paketo-buildpacks/builder:base
  default: gcr.io/paketo-buildpacks/builder:base
  full: gcr.io/paketo-buildpacks/builder:full
buildpacks:
- paketo-buildpacks/go-dist
- ghcr.io/boson-project/go-function-buildpack:tip
volumes: []
buildEnvs: []
envs: []
annotations: {}
options: {}
labels: []
healthEndpoints:
  liveness: /health/liveness
  readiness: /health/readiness
created: 2022-03-15T09:31:21.927426Z
invocation:
  format: cloudevent

To a resource that looks like this:
apiVersion: func.knative.dev/v1alpha1
kind: Functions
metadata:
  annotations:
    invocation: cloudevent
    runtime: go
    version: 0.19.0
  creationTimestamp: "2022-03-15T09:31:21Z"
  name: func-test
spec:
  build:
    build: local
    builder: gcr.io/paketo-buildpacks/builder:base
    git: {}
  template:
    spec:
      containers:
      - image: docker.io/salaboy/func-test:latest
        livenessProbe:
          httpGet:
            path: /health/readiness
            port: 0
        name: func-test
        readinessProbe:
          httpGet:
            path: /health/readiness
            port: 0
        resources: {}

I've marked most of the fields as omitempty, hence all the empty ones are not showing.
Notice that the func.yaml is already suffering (git attribute) from the changes in the marshallers, as the tags for the serialization works differently.

@lance @zroubalik is there any way to exclude the vendor changes? I might have mixed things up with a rebase

@lance @zroubalik is there any way to exclude the vendor changes? I might have mixed things up with a rebase

I think you want to keep vendor changes in - can you get things right with ./hack/update-deps.sh?

@salaboy are you rethinking this PR?


Support multiple EOS token ids + fix bugs in JsonSchemaParser

Two contributions:

We modify the code so that it can support multiple EOS token ids, while also being backwards compatible. (This is necessary for some new models that have multiple stop tokens, otherwise the parser will not stop correctly.)
JsonSchemaParser was not handling number type correctly (leading zeros, decimal points, exponents like 1e5). I added a few dozen new test cases to cover this complex functionality and modified the NumberParser class. Coding style was a bit messy, completely open to any changes on that front.

Thank you very much for the PR! I will thoroughly review it in a couple of days and merge it in. It looks great from first glance.

Thank you very much for your contribution!


Proposal: pass request object to router.find

It can be useful to make decisions about headers in the routing layer (e.g. for API versioning or media types). Having the full request available to the router allows the application to route requests based on any value of the WSGI request env.
To implement this kind of functionality currently requires putting routing logic into response handlers (after HTTP method resolution) or manipulating the request URI using middlewares. Neither of these solve the problem in a straightforward way, and both overload another layer of the application with values computed from headers (respectively the response handler and the request path).
falcon.api.API's _get_responder method should pass the request object to the router during route-finding to provide greater control in the routing process:
route = self._router.find(path, request=req)

This would constitute a breaking change in the routing API, where the find methods of routers would need to accept a new keyword argument, but I believe the power this affords makes it worth the change. I expect the biggest win from this change would be in allowing applications to solve API versioning (https://github.com/falconry/falcon/issues/645, https://github.com/falconry/falcon/issues/932) using a custom router or a router wrapper.
What do you think?

Hmm, interesting idea. Since path is simply req.path, you might just pass in req instead, e.g.:
route = self._router.find(req)

If we make this a breaking change, it will have to wait for 2.0. Alternatively, we could introduce a new method that, if present, is called instead of find(), e.g.:
if self._router_implements_search:
    route = self._router.search(req)
else:
    route = self._router.find(path)

Alternatively, we could wrap find() with a shim when search() is not available, or use it directly when it is. This would incur the overhead of an extra function call in the former case:
    route = self._router_search(req)

Finally, we could avoid introducing a new method by simply adding a kwarg as originally proposed. We could check the argspec to determine whether or not the router supports the new parameter. But those two args would be somewhat redundant as I mentioned earlier.

I'm in favour of branching within _get_responder as it reads simply and introduces very little overhead for both the default router and those implementing the new method.
There's a risk that whichever name is chosen for the new method could already be used in the namespace of a user's custom router. We could introduce a new keyword argument to the API class that allows users to specify which method on their router accepts a Request object (if any), defaulting to "search".

This issue is resolved with: https://github.com/falconry/falcon/commit/ad583b9e170361bbc6258997ff11c69bc8ac081f, https://github.com/falconry/falcon/commit/572d3ac90792ec4751fae946126cb718bc221c36, https://github.com/falconry/falcon/commit/ee89b7c9ffcd373900a8c3e8090c6ed90e1f4631


Gamebase

Basic stuff ported over from past projects

This will contain everything up to but not including CTF (except some base files for testing) as in team and class selection


dead links in 'Frame by Frame Filter Data Request'

When process button is clicked on any file this happens:

Overall, I haven't been able to process a single file in the AWS server yet.

OH NO! I will fix it. Sorry!

So it is good in Amazon now. I forgot to delete some of the data that supposed to be not there and i think it caused some errors it seems.

Please let me know if you still have issues.

Thanks!
On Fri, Apr 14, 2017 at 12:25 AM yayoiukai<EMAIL_ADDRESS>wrote:

Please let me know if you still have issues.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/bavc/signalserver/issues/218#issuecomment-294106776,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AI_8UWsEdCfkkKu8xlhQ5p-V1TfQpEhqks5rvx9UgaJpZM4Mw9zh
.

--
Kelly Haydon
Preservation Manager
Bay Area Video Coalition
415-558-2158 |<EMAIL_ADDRESS>twitter/instagram: @bavcpreserve
Where do you find a VR demo, career advice, a discount on SF's most popular
classes and spiked lemonade? BAVC's Open House! May 13th 1-4pm
Black Lives Matter! I stand with BLM!


[bug or feature?] need to grant drop permission to non-admin user

Bug report
currently using 0.13.0
There seems to be only 2 kinds of users: Admin and Non-admin. Admins are the only users who can DROP series or measurements, but cannot be restricted to certain databases. Non-admin users can be restricted to certain databases, but cannot drop anything. Seems like we need a middle ground here, like a "local-admin" who can be given administrative permissions for particular databases. Otherwise we must run many InfluxDB servers in order to manage permissions in this way.
Steps to reproduce:
Grant all permissions to a non-admin user, try to drop a series as that user
Expected behavior:
I want the user to be able to drop a series or measurement, but only in their specified database.
Actual behavior:
The non-admin user can (at most) read and write data, but not drop anything.

+1 on this for 1.0.2... non-admin user can create measurements/series but not drop them

+1


Disable MSA

Is there a possibility to disable Microsoft Account to login, so to only use AAD account as login option?

No @pieterdv, msal is about the converged endpoint, which offers authentication for both AAD and MSA. If you want only AAD, you probably want to use ADAL.js.

I was in the believe that MSAL is the future library and ADAL.js is going to be phased out? So MSAL and ADAL will be maintained a long each other?

Yes, for the moment, until the converged endpoint (AAD V2) supports all the scenarios that the V1 endpoint supports

Ok, my question was more a feature request, not something I need right away. The possibility to only login to AAD will come to MSAL in the future? If so my question is answered. Thanks!


Fix saving of rememberSaveable values

I split the PR into two commits, where each of the commits are fixing a bug in its own right.
To summarise:

Saveable didn't have a serialization adapter, so it'd crash because of that.
When deserialising a MutableState, we didn't deserialise the value within.

🙏


fix the log dir

What this PR does / why we need it:
the default the log dir should be the /var/log/spidernet/spiderpool.log.
Fix :
Some code use the /tmp/cni.log
Some docs use the /var/run/spidernet/spiderpool.log
Which issue(s) this PR fixes:
https://github.com/spidernet-io/spiderpool/issues/524
Special notes for your reviewer:
make sure your commit is signed off

the E2E failed
the reason maybe miss the directory "/var/log/spidernet" , so failed to write /var/log/spidernet/spiderpool.log

the E2E failed the reason maybe miss the directory "/var/log/spidernet" , so failed to write /var/log/spidernet/spiderpool.log
the creation of parent directory should be done by IPAM plugin , but not CI

The code has the feature of "mkdir", but the permission is not enough. So add it to the CI

the creation of parent directory should be done by IPAM plugin , but not CI

The current code already solved.
https://github.com/spidernet-io/spiderpool/blob/9d81a833ee164232d6b87367ca3a580353218d22/pkg/logutils/log.go#L146-L149


disable service worker

Thanks go to @vigejolla Ville Nummela<EMAIL_ADDRESS>for this fix.
The service worker prevents login on Sailfish OS running ESR78. Removing it fixes the issue and doesn't seem to cause any adverse consequences.

Will merge when I get the chance to try it myself ;)
I have in mind, that the serviceworker was connected to how i wanted to do notifications, thats why I decided to wait with implementing them...

Understood. This was a quick fix to get the app to run (because we want to use it!) and I didn't explore it too deeply, so you may well find there's a better way to address this.


Retrieving trip duration

Is it possible to get the duration of a certain trip?

I've got the same problem


organize regular calls

[ ] define frequency : once every 6 weeks.
[ ] next meeting: 27.02.2022. 8am UK / 9 CET . / 9am UK -10 am CET as an alternative
[ ]


Finally remove norm

Second attempt after https://github.com/poliastro/poliastro/pull/771. I applied @stuartarchibald suggestion from https://github.com/numba/numba/issues/4701#issuecomment-541630071.

Removing code is always such a pleasure!


WFLY-5118 Remove use of domain management module in web migrate op

Linux Build 7730 is now running using a merge of 405359c4c5649887b413522a0fa649ba088e1df8

Linux Build 7730 outcome was SUCCESS using a merge of 405359c4c5649887b413522a0fa649ba088e1df8
Summary: Tests passed: 3055, ignored: 358 Build time: 00:48:04


should not be a deployment

I have found on k8s 1.15.x that deployments can sometimes run on top of each other, even when strategy is set to Recreate. Specifically, if a pod is running from a deployment, and is then manually deleted, the new pod will spin up before the old terminates.
This could be dangerous for SQL server if new pod starts on same node; both containers may try to read/write from same data and could potentially lead to corruption.
Instead of using Deployment, StatefulSet should be used for SQL server. This will ensure orderly spin-up/shut down of pods.

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

ID: 04922c04-a2da-186c-5946-1cc4d9a7447b
Version Independent ID: 6e490885-cdd7-079a-0b3a-4688616b0954
Content: Deploy a SQL Server container with Azure Kubernetes Services (AKS) - SQL Server
Content Source: docs/linux/tutorial-sql-server-containers-kubernetes.md
Product: sql
Technology: linux
GitHub Login: @MikeRayMSFT
Microsoft Alias: mikeray

@csb1582 -- thank you for your feedback.  You are welcome to raise this issue here:

SQL Server Feedback


feature add map to RectUtility update colorc for canvas

Did some discussion of this on Discord and fixed an initial thing or two. Merging to get a v1.2.0-SNAPSHOT for use with NUI-fixed modules. Will see if more tweaks are needed then release when the dust has settled.


Fix recipe_climwip_brunner20esd

Description
In the rounds of recipe testing for the release of version v2.5.0, it was noticed that the recipe recipe_climwip_brunner20esd.yml always fail because of the same missing data files:
2022-03-03 16:57:31,058 UTC [29035] ERROR   esmvalcore._recipe:1253 Missing data for preprocessor calculate_weights_climwip/tas_CLIM_future:
- Missing data for CMIP6_CESM2_r1i1p1f1: tas
- Missing data for CMIP6_CESM2_r2i1p1f1: tas
2022-03-03 16:57:31,058 UTC [29035] ERROR   esmvalcore._recipe:1253 Missing data for preprocessor weighted_temperature_graph/tas:
- No input data available for years 2015-2100 in files:
/mnt/lustre02/work/ik1017/CMIP6/data/CMIP6/CMIP/NCAR/CESM2/historical/r1i1p1f1/Amon/tas/gn/v20190308/tas_Amon_CESM2_historical_r1i1p1f1_gn_185001-201412.nc
- No input data available for years 2015-2100 in files:
/mnt/lustre02/work/ik1017/CMIP6/data/CMIP6/CMIP/NCAR/CESM2/historical/r2i1p1f1/Amon/tas/gn/v20190308/tas_Amon_CESM2_historical_r2i1p1f1_gn_185001-201412.nc

see test run.
The problem is that the ssp585 data are not available on ESGF for the CESM2 model. I also couldn't find an errata on this.
I made a test by commenting out the missing dataset and this is enough to run the recipe successfully.

Related to #2535
Link to documentation: https://docs.esmvaltool.org/en/latest/recipes/recipe_climwip.html

Before you get started

[ ] ☝ Create an issue to discuss what you are going to do

Checklist
It is the responsibility of the author to make sure the pull request is ready to review. The icons indicate whether the item will be subject to the 🛠 Technical or 🧪 Scientific review.

[x] 🛠 This pull request has a descriptive title
[x] 🛠 Code is written according to the code quality guidelines
[ ] 🛠 Documentation is available
[x] 🛠 Tests run successfully
[x] 🛠 The list of authors is up to date
- [ ] 🛠 Any changed dependencies have been added or removed correctly
[x] 🛠 All checks below this pull request were successful

New or updated recipe/diagnostic

[x] 🧪 Recipe runs successfully
[ ] 🧪 Recipe is well documented
[ ] 🧪 Figure(s) and data look as expected from literature
[x] 🛠 Provenance information has been added

To help with the number of pull requests:

🙏 We kindly ask you to review two other open pull requests in this repository

I have assigned milestone v2.5.0 to this PR, but feel free to change that to v2.6.0 if you prefer. Also, don't hesitate to edit the documentation if needed.

Thanks for fixing this, with the comment its a fine solution for me. I guess any potential user would probably not have all of the models available either so I don't see it as super critical that it is not identical to the setup in the paper.

Thanks for fixing this, with the comment its a fine solution for me. I guess any potential user would probably not have all of the models available either so I don't see it as super critical that it is not identical to the setup in the paper.

Thanks for fixing this, with the comment its a fine solution for me. I guess any potential user would probably not have all of the models available either so I don't see it as super critical that it is not identical to the setup in the paper.

Thanks for fixing this, with the comment its a fine solution for me. I guess any potential user would probably not have all of the models available either so I don't see it as super critical that it is not identical to the setup in the paper.

Fully agreed, thanks! Thanks you all for your reviews! Happy to confirm the recipe will be running in v2.5 👍


Remove Unnecessary Horizontal Scroll with Word Wrap

When the error lens first appears, it creates a horizontal scroll, also if the user has word wrap set.

This problem alone is annoying, but potentially not currently fixable (I'm not sure if there are APIs for this in VS Code). I guess it's also tracked in #12 and https://github.com/microsoft/vscode/issues/32856.
However, after the error lens is gone, it would be nice to at least remove the scrollbar again. If you look carefully in the gif above, changing tabs triggers this.
Can you think of any way to trigger a re-layout to remove the scrollbar again?

Actually, would it be possible to completely disable the scroll like the gitlens.currentLine.scrollable option implemented at the link below?
https://github.com/eamodio/vscode-gitlens/blob/30e1d290e8f337d56596a030ff097eeabdd98eb7/src/annotations/annotations.ts#L355-L356

I can confirm that the textDecoration: 'none;position: absolute;' hack works to disable the scrollbars (although the lens text will not be wrapped - it will be cut off).
Maybe a setting for this?

From the next version (not sure when yet):
"errorLens.scrollbarHackEnabled": true,

Great, thanks!

It's not working.

@Tizoner If you are using my extension and not the one that was forked and on the latest version 3.2.4 it should work.

Is this forked one?

Any more details? What's not working? A .gif demonstrating the problem? Steps to reproduce?

Horizontal scroll appears even with word wrap enabled.
On image below you can see both word wrap, error message that does not wrap, and resulting horizontal scroll bar.

This option doesn't change anything.

Do you have other extensions that create inline decorations? This hack only prevents showing scrollbar from this extension, not all extensions.

No, I don't have other extension that create inline decorations.
I've tested this by disabling error lens extension and doing the same steps as above without seeing appearance of the horizontal scroll bar.

Well, I have no idea why it doesn't work. You are welcome to investigate.

@Tizoner hmm, strange. What version of VS Code? Still working for me with Version: 1.51.1.
Maybe try disabling all other extensions?

Disabling of other extensions didn't help.
Here is my version of VS Code:

@Tizoner looks pretty much the same as my version (except you're on Windows - I guess this is not an issue though).
I guess you've additionally already tried:

Completely closing all VS Code windows and restarting
Trying VS Code Insiders Edition

What are the settings when you ctrl-shift-P and select "Preferences: Open Settings (JSON)"? I'm guessing you have word wrap enabled...?
Can you record a gif of the behavior (eg. with ScreenToGif) and upload it here?


[$500] mweb/Safari - Settings - Smart App Banner is not shown on the Workspace Page Detail

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Issue found when executing PR https://github.com/Expensify/App/pull/26172
Action Performed:

Open https://staging.new.expensify.com/
Tap on Profile icon
Tap on Workspaces
Tap on any listed workspace

Expected Result:
The Smart App Banner should be shown on Workspace Page Detail
Actual Result:
Smart App Banner is missing on the Workspace Page Detail
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[x] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: 1.3.69-0
Reproducible in staging?: Yes
Reproducible in production?: Yes
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/78819774/25a92df6-afb2-4edb-9104-9aef8445e05a
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~0172cb50901906f9d7
Upwork Job ID:<PHONE_NUMBER>900023808
Last Price Increase: 2023-09-15

Reproducible

i think we agreed to let it be as it is
https://github.com/Expensify/App/issues/8791#issuecomment-1320082103

Thanks Pushpender! Looks like we can't do anything about this, closing


Integrating coverage reports

After some recent PR's we've got some test coverage working w/ browserify-istanbul & puppeteer.

Initial PR and discussion.
Current tests (working if tap --coverage is not enabled)

There's quite a bit of hacks that we had to pull to get it working and it still doesn't properly. There's also a bug, that looks like it's from the puppeteer side, when running tests with tap --coverage.
 not ok Page Error: Error: ReferenceError: cov_vnbsudnht is not defined     at <anonymous>:1:12
And then a big traceback that completely miss-reports the line that must have generated it.
I'm not an expert on how coverage is instrumented for istanbul/nyc/tap so I'm a little out of my depth at this point, but I figured ya'll had thought a bit about coverage and how it might be best integrated.
/cc @bcoe @izs @alexindigo

@mikeal This surfaced a while back: https://github.com/GoogleChrome/puppeteer/issues/763#issuecomment-329333667
Not sure how we can help here though.

@aslushnikov, @mikeal and I have been hammering out an approach that works well with Istanbul and puppeteer ... I wonder if we could figure out a way to make Istanbul not step on the toes of puppeteer, while also documenting somewhere how to get test coverage?

@bcoe do you care about coverage of the browser-run code? E.g. given the following script, would you care about coverage of the evaluated code?
await page.evaluate(() => {
  alert('foo');
});

If I'm understanding how things work; I don't think we care about the coverage of alert('foo'); -- the code that we're collecting coverage for will have been pre-instrumented by the user running tests (using a tool like webpack or browserify); It might be enough to place istanbul ignore next at a few key places in the puppeteer codebase ...
This might also be of interest, and coincidently got submitted today:
https://github.com/istanbuljs/istanbuljs/pull/108

So, the following code.
async () => {
  same(clean(document.querySelector('test-two render').textContent), '2')
}

When .toString() with coverage enabled is:
async()=>{cov_vnbsudnht.f[0]++;cov_vnbsudnht.s[3]++;same(clean(document.querySelector('test-two render').textContent),'2');}

Is there a way to dynamically pull this object from the Node.js scope and represent it in headless Chrome?

To clarify, the reason we are getting errors in evaluate() is because this code is injected in to all lines in Node.js when coverage is enabled.
When this is then run in puppeteer this object doesn't exist.
We should be able to fix this if we can:

detect when coverage is enabled
look for references to coverage objects in evaluate strings prior to evaluation.
crate a representation of the object in the browser that proxies these calls to the same object on the Node.js side.

@bcoe I don't think that we want to ignore these lines. These are lines of the test file, if they end up being dead code that never runs we actually want that in the report.

@mikeal in general the test file should be skipped for instrumentation; I'm a bit confused as to why the lines of the assertion would be instrumented for test. You can see the ignore logic here.
As long as the source-code being passed to puppeteer for execution has been instrumented in full, it will have a coverage tracking object populated in it -- I'm a bit confused how the partially covered snippets of code are making their way into puppeteer (I was equally curious when I read through #763).

Is there a way to dynamically pull this object from the Node.js scope and represent it in headless Chrome?

@mikeal You can create harness using the page.exposeFunction.
Something along the lines:
// Provide window.countCoverage function in browser context
await page.exposeFunction('countCoverage', coverageProperty => {
  cov_vnbsudnht[coverageProperty]++; // very rough; there should be array index as well
});
// Add harness to browser context that marshals coverage calls to node
await page.evaluate(covid => {
  window['cov_' + covid] = new Proxy({}, {
   // ... proxy property access over to node using the window.countCoverage
}, covid);

@bcoe by default the test file lines are included in coverage. In all my other projects I leave this on because it has actually found a lot of bad tests with dead code in them that we thought was checking for something.

As long as the source-code being passed to puppeteer for execution has been instrumented in full, it will have a coverage tracking object populated in it -- I'm a bit confused how the partially covered snippets of code are making their way into puppeteer (I was equally curious when I read through #763).

So, check out this line of code https://github.com/mikeal/gza/blob/coverage/tests/test-browser.js#L165
The function passed to evaluate is not executed in Node.js, it is .toString()'d and then eval'd in the page's context in puppeteer. Unless we skip coverage of the file in question, that function will be instrumented, and that partial instrumentation will fail when eval'd in puppeteer :)

@bcoe is there only one cov_${id} object in the entire process? Is there any way to detect the id(s) of these in the Node.js process?

Ha, now I remember hitting similar issue with Phantom :) But somehow it slipped my mind this time :)

@alexindigo we're making some progress here :) https://github.com/GoogleChrome/puppeteer/issues/1054

@mikeal there will only be one  cov_${id} in the entire project, post instrumentation it will have been inserted at the very top of the test file -- I wonder if you could potentially kick this along with the code that's being serialized ... maybe wrap the default behavior?

@bcoe if there's only one of these with the same name for the entire process then we just need to know its name and find a globally accessible reference to it.
With that we could implement this proxying behavior in puppeteer and dynamically insert the proxy object when globals.__coverage___ exists :)

@bcoe are you sure there is one of these objects per process and not per file? https://github.com/istanbuljs/istanbuljs/blob/aae256fb8b9a3d19414dcf069c592e88712c32c6/packages/istanbul-lib-instrument/src/visitor.js#L15

Here it's just passed with the arguments
https://github.com/alexindigo/obake/blob/master/lib/phantom.js
although it's somewhat limited use case.

Does coverage object has any metadata in puppeter?

I figured out what the cv_${id} objects are and where to find them :)
There's an object per file and the key can be derived from the filename. The object itself is actually on the global coverage object but that object has keys of the entire filename so you just need to re-hash it the same way the coverage system does it.
let cv_objects = {}
Object.keys(__coverage__).forEach(filename => {
  let hash = createHash('sha1')
  hash.update(filename)
  let key = parseInt(hash.digest('hex').substr(0, 12), 16).toString(36)
  cv_objects[key] = __coverage__[filename]
})

I think that with this I can start working on a patch tonight/tomorrow that can detect coverage and make puppeteer's evaluate function "just work" :)

Alright, PR is sent https://github.com/GoogleChrome/puppeteer/pull/1067
Could use some help fixing Typescript globals errors.

Summarizing, there are two issues here:

enabling istanbul to work with pptr - important!
collecting coverage inside browser context - less critical, orthogonal to [1] and should be handled separately. For the record, there's a https://github.com/gotwarlost/istanbul/issues/254 that might come handy.

Let's scope this issue to cover [1].
I see a few options to enable istanbul with pptr projects:

Fix https://github.com/gotwarlost/istanbul/issues/310 and https://github.com/gotwarlost/istanbul/issues/674 - istanbul spoiling function's toString() method. It might be that this could be fixed by injecting the following small code snippet in the beginning of istanbul-preprocessed code:

(() => {
  const originalToString = Function.prototype.toString;
  Function.prototype.toString = () => {
    const code = originalToString.call(this);
    return code.replace(/\bcov_[^;]+/g, '');
  }
})();

@mikeal mentioned this wouldn't work, though I don't understand why. Having this as an istanbul config option seems pretty safe.

Adding cov_XX && prefix to every istanbul coverage trace. This will make the cov_XX.s[3]++ trace to become cov_XX && cov_XX.s[3]++, and might also help to address https://github.com/gotwarlost/istanbul/issues/119

Recommend clients to use istanbul's code ignore comments to guard pptr's evaluations.

@bcoe @gotwarlost @mikeal thoughts?

@aslushnikov
I don't think this is a good path. This actually breaks the coverage we have working in cappadonna and will effectively miss the .execute(code) that runs in the browser.
I don't see why an istanbul config option would be useful. This breaks coverage detection in many of the blocks you would configure it for, it's better to just opt those files out of coverage if you're concerned about this.
We actually have something that "just works" if you use a higher level tool https://github.com/mikeal/cappadonna/blob/master/index.js#L95
I know @bcoe is working on integrating with v8's coverage utilities but those are still quite far behind and, as far as I understand it, don't include the level of branch coverage we already have working in istanbul.
If that gets to the point we can rely on it then we would just want to change instanbul's function .toString() by default.

@aslushnikov :wave:
I did something similar to what you're proposing, to preserve function names (Istanbul's instrumentation at one point broke Function.name). I'm glad we put in the work to rewrite code in such a way that the name was preserved, but it was a hassle and took quite a few iterations to get right... I think that preserving the original toString() would be significantly more complex and I think would also lead to a significant performance hit when running instrumented code.
What I would rather see would be that we work with the V8 team to close the delta on V8 coverage vs. Istanbul coverage.
Newer versions of V8 do support block level coverage, but I think there are still some missing features (I was playing last night, and for instance conditional assignment seemed to not be covered).
I suggest we loop in folks like @schuay, and see if we can't get V8 coverage in Node.js over the finish line, vs. adding any more complexity to Istanbul's parser -- which I'd honestly love to retire.

V8 JS coverage sounds great to me, it's way nicer then what istanbul is currently doing.

Newer versions of V8 do support block level coverage, but I think there are still some missing features (I was playing last night, and for instance conditional assignment seemed to not be covered).

@bcoe: do you have a list of missing parts? cc @ak239 who lives and breathes V8.

@aslushnikov I've been working from this testing repo where I intend to document the deltas I find between Chrome's coverage functionality, and the instrumentation folks have become accustomed to with Istanbul.
Here are a few related issues:
discussion on v8 issue tracker, regarding adding deatiled coverage to Node.js.
discussion on Node.js project, regarding adding better v8 coverage support
@ak239 I would definitely be curious to know your thoughts around v8's built in coverage; here's an example of where I think things are lacking (maybe I'm just not doing things properly?):
code to instrument:
const foo = true || (9 + 10)

instrumenter output:
{
  "result": [
    {
      "scriptId": "56",
      "url": "file://test/fixtures/b.js",
      "functions": [
        {
          "functionName": "",
          "ranges": [
            {
              "startOffset": 0,
              "endOffset": 29,
              "count": 1
            }
          ],
          "isBlockCoverage": true
        }
      ]
    }
  ]
}

My expectation would be something that indicates that the block (9 + 10) has not been executed... In Istanbul there's the construct branchMap which tracks specific branches that have been executed. I think my expectation was that Chrome's detailed coverage would provide something close to this level of granularity.

I left comments about teardown and tearup events. As far as I know precise coverage supports block - level coverage and true || (9 + 10) are not separate blocks.
@schuay, please take a look.

V8's block coverage doesn't support short-circuiting boolean operators yet, see: https://crbug.com/v8/6660 and the list of known limitations here. If this is important to you please let us know.
cc @hashseed

We'd love to help with fixing any issues the community feels are important. We have long-term plans to no longer require reload when block-based coverage is enabled, also to solve the issue in Node.js where reload is not possible. That however will require some more time.

@aslushnikov I don't think page.coverage() solves the issue of wanting to run nyc on the NodeJS side without breaking Puppeteer's page.evaluate()

Has there been any progress on this issue?  I have this in my code to allow coverage report to run.
    /* due to this issue https://github.com/GoogleChrome/puppeteer/issues/1054,
     * the istanbul (coverage reporter) will cause error inside page.evaluate throwing exception.
     * the following "ignore" comment allows istanbul to succeed */
    /* istanbul ignore next */
    var hrefs = await page.evaluate(() => {
        const anchors = document.querySelectorAll('a');
        return [].map.call(anchors, a => a.href);
    });

@c094728 I think that is the proper approach, which I have taken too. You can also put the comment right infront of the arrow function to make sure really only the function is ignored, not the page.evaluate() call itself:
https://github.com/felixfbecker/semantic-release-firefox/blob/78fb91f59ed2730536fbd986ab081281a9f019be/src/publish.ts#L106-L111
I don't think Puppeteer can or should do something here - the function must be prevented from being instrumented because it is serialised and sent to another context, but there is no way istanbul/nyc could know that, and no way for Puppeteer to tell istanbul/nyc. The developer is the one who should annotate the function, and they can do so with istanbul ignore comments, which works fine.


[Bug]:  Error: ptr goes out of range when reading WalCmd

Is there an existing issue for the same bug?

[X] I have checked the existing issues.

Version or Commit ID
v0.2.1
Other environment information
centos 7

Actual behavior and How to reproduce it
[09:08:47.108] [25550] [info] Find temp wal file: /var/infinity/wal/wal.log
[09:08:47.108] [25550] [info] Start Wal Replay
[09:08:47.162] [25550] [critical] Error: ptr goes out of range when reading WalCmd
[09:08:47.162] [25550] [critical] 0, /usr/bin/infinity(+0xaa4259) [0x557b679e5259]
[09:08:47.162] [25550] [critical] 1, /usr/bin/infinity(+0xaa4aae) [0x557b679e5aae]
[09:08:47.162] [25550] [critical] 2, /usr/bin/infinity(+0x44b80a) [0x557b6738c80a]
[09:08:47.162] [25550] [critical] 3, /usr/bin/infinity(+0x453171) [0x557b67394171]
[09:08:47.162] [25550] [critical] 4, /usr/bin/infinity(+0x45442c) [0x557b6739542c]
[09:08:47.162] [25550] [critical] 5, /usr/bin/infinity(+0x454244) [0x557b67395244]
[09:08:47.162] [25550] [critical] 6, /usr/bin/infinity(+0x45c956) [0x557b6739d956]
[09:08:47.162] [25550] [critical] 7, /usr/bin/infinity(+0x414474) [0x557b67355474]
[09:08:47.162] [25550] [critical] 8, /usr/bin/infinity(+0x26fda6) [0x557b671b0da6]
[09:08:47.162] [25550] [critical] 9, /usr/bin/infinity(+0xf6fb3) [0x557b67037fb3]
[09:08:47.162] [25550] [critical] 10, /lib64/libc.so.6(__libc_start_main+0xf5) [0x7f5de1114555]
[09:08:47.162] [25550] [critical] 11, /usr/bin/infinity(+0xf6d19) [0x557b67037d19]
Expected behavior
No response
Additional information
The /var/infinity directory will generate a large number of core files, such as core.123, which ultimately leads to insufficient disk space

Can you reproduce the crash?
Can you share the operations or script to us to reproduce the fault?
You can try the latest development version: 0.3.0.dev4, since we resolve some WAL related issues.

Currently infinity WAL format is unstable between versions. So it's likely a new version infinity reads wal generaged by an old version infinity.

At present, I am unable to reproduce the issue. I will try the latest version

Reopen it, if the issue happens again.


How exactly does the Gram matrix get the style of the image?

And what is the reason that the Gram matrix works so well for style transfer?

this is a good article: https://arxiv.org/abs/1701.01036
Informally you can think of it as a sort of hash or fingerprint of the activations of a layer, which the optimiser has to "discover".  Because there's any number of structureless jumbled style representations which would match this hash, the optimiser is statistically more likely to converge on them than the original artwork.  The content loss keeps a balance so that details of the subject etc are also preserved.

Exactly, and other representations work as well or better than gram matrices - histograms for example https://arxiv.org/abs/1701.08893


Daily Promo Message invisible (white on white)

At first: thanks for supporting the new chrome design, i love it! Keep up the good work!
I've noticed that chromes daily promo message on the bottom of a new empty tab is invisible because white text on a white background is displayed.

Chrome Version: Version 69.0.3497.92
OS: Windows 10

Replicating and fixing this issue is going to be a real pain because messages like that only show up occasionally. The next time I see a Google message I'll see if anything can be done to fix this.

This is kinda not on topic with this issue, but is there an API to change the menu and popup colors like the one in the screenshot?

@Fiddle-N I had a promo message this morning and opened the inspector to look at what caused the white color. The following line was responsible for it:
#prm a, #alp-link, #mv-noti-lks span, #mv-noti-error-lks span { color: rgba(255,255,255,1) !important; }
I hope this helps you to fix the issue. Keep up the good work.

@Steve2955 Thanks for your message today. Without it I would have never noticed that the "NTP message" was now present. Annoyingly, the message does not appear on 1366x768 monitors at 100% zoom, which is currently the laptop that I am using. I had to drop zoom to 90%, and then I saw the message appear.
I've made a small tweak to my theme to fix the issue - I'll be releasing it very soon.

@Fiddle-N yea, it looks good! Thank you so much! I really enjoy this theme.

@Homer0815 Awesome! In that case, time to close this issue. Thanks to you and @Steve2955 for your help with this.

Sorry people, looks like I'm going to have to revert the change. Long story short, fixing the promo text has caused a regression with the text on the chrome://apps page.

I don't know if it's just me, but it seems to be fixed.

Chrome: Version 69.0.3497.100
OS: Windows 10

@Steve2955 I can confirm that! Weird.

Looks like Google fixed the issue without me changing anything. Great!


theater.stop() , choose to instantly pause the sentence or wait until it's writed

Hi again ! My third comment in a week, sorry for bothering you soo much D: !
Actually, when you send theater.stop() , the JS wait until the sentence is finished before stopping.
A great enhancement could be to add a parameter to choose if the sentence must be finished or not :
I see a lot of uses for that feature, my try is to pause writing when the webpage isn't visible (= window minimized or user in another tab), and resume when it's visible so the user won't miss the text.
With the current theater.stop() it is impossible to correctly achieve, since the sentence finishes before stopping. You can see that concept here, try to switch tabs for more than 2 seconds :) https://jsfiddle.net/AmineIzumi/zy118txu/
Thanks in advance for your help ! :+1:

No problem, you're not bothering me at all, I'm always glad to get in touch with people using TheaterJS ;)
Back then, when I first added .stop(), I wanted it to stop the animation right away but I quickly figured out that it'd be really hard to achieve. The thing is, when an actor types, he can make mistakes but not too much. When he starts fixing his mistakes, he fixes them all at once. So it means that the animation has some states that depends on the previous calls. That's why a real stop feature is hard to implement. I can see some ways to handle that but it would involve rewriting a good part of TheaterJS to move the state management higher. It could be really interesting to have this feature and a lot of fun to code it but I can't promise anything about whether I'd do it and when.
Since I released the first version of TheaterJS, I've seen a lot of people using it by disabling the mistakes feature, setting a high and constant typing speed with just one actor. For such case, I think this library is an over-kill as implementing a typing/erasing animation in JavaScript is really easy. That's why I am currently writing a minimalist version with a lot of comments and the features that you are the most interested in. I'll make sure to add a stop function and let you know when I'm done (which should be in a few days) :)

I finally had some time, so here is the "minimalist version". I've also added a note in the documentation. I'd be curious to know if it actually fits your needs?

Okay, thanks for your detailed explanation ! Your comments in the fiddle are also really useful !
This minimalist version is fitting my needs of stopping an animation instantly, but i don't think I'll replace TheaterJS by that one : Even if my fiddle had the mistakes feature disabled, it was only for example purpose, and this feature is what I mostly love in TheaterJS . It adds a 'human' touch to the typing animation, which i find really amazing :D !
However, this minimalist version is still really useful, and i'll probably use it someday for a 'static' text typing animation. Thank you again for that !

Glad you like it, that's actually the whole purpose of TheaterJS :)


Minor improvements to Ubuntu 18.04 playbook

I also think that the syntax style of the playbook could be more consistent, but that's not part of this PR.

Hi @d4nyll ! Thank you for your contribution, I'm merging it now :+1:

Hi @d4nyll ! Thank you for your contribution, I'm merging it now :+1:

Thanks @erikaheidi!


Extension portal link updated

update link for portal to be the new solidity SDK docs

📝 Changed routes:

…ts/deploy/[contractId]

(view full size)

Commit 65496789b47bd53d1b9a113a540c98f92c51aedc (https://thirdweb-7wouj6nxp.thirdweb-preview.com).


Fix tests

Coverage decreased (-0.5%) to 99.524% when pulling 6c6e93269f9ebfa164629b969c88345a31575543 on fix-tests into e177c3b7ca901effab3f5343ef4900a11112e846 on master.

Coverage decreased (-0.5%) to 99.524% when pulling 2ae4a5ad6cf1de8a731f25f958487d76b681cea0 on fix-tests into e177c3b7ca901effab3f5343ef4900a11112e846 on master.


Powershell.sln does not build in Visual Studio

Steps to reproduce
Open PowerShell.sln in visual studio 2015
Build Solution
Expected behavior
Project builds and enables F5 debugging, at least for FullClr
Actual behavior
Lots of reference errors
Environment data

> $PSVersionTable

Duplicate of #1895.


Testing Go Plugins

How does one go about writing unit/integration tests for go plugins? Examples are in this repo but no test examples.
I know lua plugins have kong-pongo, is there a go variant?

It would be really great if anyone has any pointer.
@vl4d were you able to move forward?

For testing have a look at:
https://github.com/Kong/go-pdk/blob/4deec45a5bfe421a0ceebcbf7931d395250949b0/test/test.go#L6
package main
	import (
		"testing"
		"github.com/Kong/go-pdk/test"
		"github.com/stretchr/testify/assert"
	)
	func TestPlugin(t *testing.T) {
		env, err := test.New(t, test.Request{
			Method: "GET",
			Url:    "http://example.com?q=search&x=9",
			Headers: map[string][]string{ "X-Hi": {"hello"}, },
		})
		assert.NoError(t, err)
		env.DoHttps(&Config{})
		assert.Equal(t, 200, env.ClientRes.Status)
		assert.Equal(t, "Go says Hi!", env.ClientRes.Headers.Get("x-hello-from-go"))
	}

It is quite straightforward to write unit tests.
It would be good if this repo highlighted how to write unit tests. Do do this it would need to make the change highlighted in issue #5 as at the moment it is not a valid go module.


CassandraDatacenter status updates not happening correctly during cluster creation

I have reproduced this behavior consistently 3 or 4 times on a GKE cluster with 9 nodes spread across 3 zones. I am using v1.1.0 of the operator. Here is my cassdc spec:
apiVersion: cassandra.datastax.com/v1beta1
kind: CassandraDatacenter
metadata:
  name: multi-rack
spec:
  clusterName: multi-rack
  serverType: cassandra
  serverVersion: 3.11.6
  managementApiAuth:
    insecure: {}
  size: 9
  racks:
  - name: us-east1-b
    zone: us-east1-b
  - name: us-east1-c
    zone: us-east1-c
  - name: us-east1-d
    zone: us-east1-d
  storageConfig:
    cassandraDataVolumeClaimSpec:
      storageClassName: server
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi

I was watching status updates in the console and I have seen multiple times now. I will show the last few status updates to give a better picture of what is happening.
With this first update, we see that 8 pods are reported:
status:
  cassandraOperatorProgress: Updating
  lastRollingRestart: "2020-05-01T21:24:53Z"
  lastServerNodeStarted: "2020-05-01T21:33:08Z"
  nodeStatuses:
    multi-rack-multi-rack-us-east1-b-sts-0:
      hostID: 42a10825-ffca-43e0-8a44-13440fc0a586
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-1:
      hostID: 6e496a9b-8a8a-43f7-9149-83ae15633cc1
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-2:
      hostID: f3008646-ea00-4d74-9575-c90647a0811e
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-0:
      hostID: d664763f-0e4c-4511-a720-14a494742de7
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-2:
      hostID: f73691e4-b0b3-47fb-89c2-e7e6ecc62901
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-0:
      hostID: 3cab2810-be05-497a-b22d-a98f286e181b
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-1:
      hostID: 99ec2fc9-d40f-4c54-96f7-ccce3027aa66
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-2:
      hostID: 9c35e2cd-4fb7-4365-a798-ea76f19bc96d
      nodeIP: <IP_ADDRESS>

In the next update we see the superUserUpsertedProperty is set to indicate creation of the super user:
status:
  cassandraOperatorProgress: Updating
  lastRollingRestart: "2020-05-01T21:24:53Z"
  lastServerNodeStarted: "2020-05-01T21:33:08Z"
  nodeStatuses:
    multi-rack-multi-rack-us-east1-b-sts-0:
      hostID: 42a10825-ffca-43e0-8a44-13440fc0a586
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-1:
      hostID: 6e496a9b-8a8a-43f7-9149-83ae15633cc1
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-2:
      hostID: f3008646-ea00-4d74-9575-c90647a0811e
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-0:
      hostID: d664763f-0e4c-4511-a720-14a494742de7
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-2:
      hostID: f73691e4-b0b3-47fb-89c2-e7e6ecc62901
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-0:
      hostID: 3cab2810-be05-497a-b22d-a98f286e181b
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-1:
      hostID: 99ec2fc9-d40f-4c54-96f7-ccce3027aa66
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-2:
      hostID: 9c35e2cd-4fb7-4365-a798-ea76f19bc96d
      nodeIP: <IP_ADDRESS>
  superUserUpserted: "2020-05-01T21:34:07Z"

Notice though that there are still only 8 pods in nodeStatuses.  multi-rack-multi-rack-us-east1-c-sts-1 is missing.
In the next status update, we get cassandraOperatorProgress: Ready but multi-rack-multi-rack-us-east1-c-sts-1 is still missing.
status:
  cassandraOperatorProgress: Ready
  lastRollingRestart: "2020-05-01T21:24:53Z"
  lastServerNodeStarted: "2020-05-01T21:33:08Z"
  nodeStatuses:
    multi-rack-multi-rack-us-east1-b-sts-0:
      hostID: 42a10825-ffca-43e0-8a44-13440fc0a586
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-1:
      hostID: 6e496a9b-8a8a-43f7-9149-83ae15633cc1
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-2:
      hostID: f3008646-ea00-4d74-9575-c90647a0811e
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-0:
      hostID: d664763f-0e4c-4511-a720-14a494742de7
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-2:
      hostID: f73691e4-b0b3-47fb-89c2-e7e6ecc62901
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-0:
      hostID: 3cab2810-be05-497a-b22d-a98f286e181b
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-1:
      hostID: 99ec2fc9-d40f-4c54-96f7-ccce3027aa66
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-2:
      hostID: 9c35e2cd-4fb7-4365-a798-ea76f19bc96d
      nodeIP: <IP_ADDRESS>
  superUserUpserted: "2020-05-01T21:34:07Z"

Finally, we get:
status:
  cassandraOperatorProgress: Ready
  lastRollingRestart: "2020-05-01T21:24:53Z"
  lastServerNodeStarted: "2020-05-01T21:33:08Z"
  nodeStatuses:
    multi-rack-multi-rack-us-east1-b-sts-0:
      hostID: 42a10825-ffca-43e0-8a44-13440fc0a586
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-1:
      hostID: 6e496a9b-8a8a-43f7-9149-83ae15633cc1
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-b-sts-2:
      hostID: f3008646-ea00-4d74-9575-c90647a0811e
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-0:
      hostID: d664763f-0e4c-4511-a720-14a494742de7
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-1:
      hostID: 6bc7b1d7-53fa-4196-8629-bf9fdfae8a25
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-c-sts-2:
      hostID: f73691e4-b0b3-47fb-89c2-e7e6ecc62901
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-0:
      hostID: 3cab2810-be05-497a-b22d-a98f286e181b
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-1:
      hostID: 99ec2fc9-d40f-4c54-96f7-ccce3027aa66
      nodeIP: <IP_ADDRESS>
    multi-rack-multi-rack-us-east1-d-sts-2:
      hostID: 9c35e2cd-4fb7-4365-a798-ea76f19bc96d
      nodeIP: <IP_ADDRESS>
  superUserUpserted: "2020-05-01T21:34:07Z"

I can provide the full operator log if that is useful.

Part of the problem here is that we do not get the host id for the node until the pod is started, when really we should get the host id while the node is bootstrapping (we have KO-348 internally for this). As a result, all the pods for the datacenter can become ready before we've actually collected all of this information.
When we added conditions (KO-385) we also fixed a bug where updates to the status would get lost, but then recovered on the next reconcile call. With that fixed, #77 might not be relevant anymore.
Moreover, we should explicitly bar the datacenter from being marked as "Ready" until all node status have been obtained (if all the pods are have a started state, we can just do a requeue loop). I don't know if a solitary requeue after the last pod has been labeled as "Started" will be sufficiently robust.


App Crashes on Launch Screen

Whenever I try to run my app by react-native run-ios it crashes on the launch screen. I already tried to:

Remove node_modules
Remove ios folder and create again
Clear npm cache
Link with react-native link

But, If I open my xcodeproj and try to run by Xcode, it works perfectly.
Any tips?
Thanks in advance.

Having the same issue, but only in release build. debug build works normally from any launch method.

@IvRRimum I think you have a differente issue than me. My app even launch a white screen. It crashes on launch screen.

Nevermind, fixed my issue with this reply:
https://stackoverflow.com/a/42484203/486509


Avoid parsing numbers within larger strings as if they were times

For example, neither "$300" nor "300ml" are intended to be "3:00" but "300" and "300am" are fine. The time must be preceded by a space or hyphen (the hyphen is to allow 300-400 style ranges) or appear at the beginning of the string. The time (or time + meridian for AM/PM locales) must be followed by a word boundary.
I opted for (\s|-|^) here since, especially considering currencies, many different symbols can precede a number and most will be treated as a word boundary. \b would not have fixed the $300 case.
This is another one where I'm not sure if all cases are covered but the tests pass and it seems in general to be an improvement.
I did not make any changes to evalRanges via RE_RTIMEHMS and RE_RTIMEHMS2 which look like they may still have word boundary issues. Both (\s?|^) (which due to the ? can match anything) and the lack of \b are a bit concerning. For completion since this version is somewhat focused on word boundary fixes we should probably fix those as well.
Otherwise, I think this wraps up my work for this version. Will post a few ideas for the future but I'm not quite ready to get into some of the other parsedatetime-related issues that have come up in my project.

I'm not thrilled with this, but (\s|-|^) has been changed to ([\s(\["'-]|^) to avoid a few possibly common prefix characters for which we might still consider a number as a time. Attempting to create an exhaustive whitelist of characters in a regex is not a great situation to be in, so this is certainly a case where we're striving for "good enough."
This might more appropriately fall under the umbrella of a feature that I plan to propose for a future version to allow avoiding uncertain matches (e.g. 04/05/2014 is obviously a date, but 1030 is not always – even not usually – a time).

+1
IMO any number that does not have (regional) markers like : or am|pm should not be considered a time unless it's followed by hr|hrs|hours - at least in my experience that is the only time 1030 should be seen as a time: 1030 hrs

I think I read an issue here asking for a degree of certainty on results, where 1030 would be ranked very low while 10:30 AM would be ranked very high. Similarly, "tues" may be ranked higher than "sat" because the latter is a word. Couldn't find the issue but that might be a more flexible way to handle cases like that in a future version without completely dropping support for time-like numbers. No idea how that would be implemented or how arbitrary the ranking would be, but it's a nice idea ;-)
This evening I can do some final testing and merge this in, then create issues for the few bugs that were noticed (730am parses as 73:0 am, evalRanges regexes might need updates). Feel free to merge if you want to kick off the new PyPi version earlier.

This past weekend I had hoped to catch up on some open-source work but a family emergency consumed all of that time... So I won't be thinking of a PyPi release until this coming weekend

Actually I used some pre-substitutions on my other project which used parsedatetime. It would be great if you can solve this problem.

@philiptzou do you have some examples? I ended up doing substitutions before parsing as well (like "next month" to "in 1 month") but those particular cases are now fixed. I'm particularly interested in anything directly related to this PR.

@idpaterson
Sure I have some:
        self.assertEqual(
            text_normalize('2pmd.t.'),
            '2pm d.t.')
        self.assertEqual(
            text_normalize('9.15 pmest'),
            '9:15pm est')
        self.assertEqual(
            text_normalize('on feb 14th, at 330 pm'),
            'on february 14th, at 3:30pm')
        self.assertEqual(
            text_normalize('on feb 14th, at 0330 pm'),
            'on february 14th, at 03:30pm')
        self.assertEqual(
            text_normalize('tue 10:00 am?'),
            'tuesday 10:00am?')
        self.assertEqual(
            text_normalize('tuesday 10:00 am?'),
            'tuesday 10:00am?')
        month = datetime.now().strftime('%B').lower()
        self.assertEqual(
            text_normalize("let's do 1pm on the 25th"),
            "let's do 1pm on {0} 25th".format(month))
        self.assertEqual(
            text_normalize("let's do 1pm on 25th"),
            "let's do 1pm on {0} 25th".format(month))
        self.assertEqual(
            text_normalize("let's do 1pm on may 25th"),
            "let's do 1pm on may 25th")
        self.assertEqual(
            text_normalize("let's do 19th at 12:00"),
            "let's do may 19th at 12:00")
        self.assertEqual(
            text_normalize("1.06 in 2013?"),
            "1.06.2013?")
        self.assertEqual(
            text_normalize("1.06 on 2013?"),
            "1.06 on 2013?")
        self.assertEqual(
            text_normalize("tomorrow at 5.30pm?"),
            "tomorrow at 5:30pm?")
        self.assertEqual(
            text_normalize("tomorrow 5/30?"),
            "tomorrow 5:30?")
        self.assertEqual(
            text_normalize("tomorrow 2.15?"),
            "tomorrow 2:15?")
        self.assertEqual(
            text_normalize("at 8.30 or 9?"),
            "at 8:30 or 9:00?")
        self.assertEqual(
            text_normalize("at 8.30 or 9.30?"),
            "at 8:30 or 9:30?")
        self.assertEqual(
            text_normalize("tomorrow 2 or 3?"),
            "tomorrow 2:00 or 3:00?")
        self.assertEqual(
            text_normalize("how's mon 2/24 a"),
            "how is monday 2:24am")
        self.assertEqual(
            text_normalize("5.30 on sunday?"),
            "5:30 on sunday?")
        self.assertEqual(
            text_normalize("5.30 on the sunday?"),
            "5:30 on the sunday?")
        self.assertEqual(
            text_normalize("how about 8 on monday?"),
            "how about 8:00 on monday?")
        # do not convert, perhaps date
        self.assertEqual(
            text_normalize("5.30 sunday?"),
            "5.30 sunday?")
        self.assertEqual(
            text_normalize("let's try 9.15 pst on friday?"),
            "let's try 9:15 pst on friday?")
        self.assertEqual(
            text_normalize("let's do 2/24 at 11:00"),
            "let's do 2/24 at 11:00")
        self.assertEqual(
            text_normalize('6.32?'), '6:32?')
        self.assertEqual(
            text_normalize('6.32 tomorrow?'), '6:32 tomorrow?')
        self.assertEqual(
            text_normalize('6:32 tomorrow?'), '6:32 tomorrow?')
        self.assertEqual(
            text_normalize('around 630/7?'), 'around 6:30 / 7:00?')
        self.assertEqual(
            text_normalize('our 1st #myTalkManuary win'),
            'our 1st #mytalkmanuary win')
        self.assertEqual(
            text_normalize("How's Fri afternoon 1-2:30p?"),
            "how is friday afternoon 1:00 - 2:30pm?")
        self.assertEqual(
            text_normalize("let's do 11 on tuesday"),
            "let's do 11:00 on tuesday")
        self.assertEqual(
            text_normalize("let's do 11:00 on tuesday"),
            "let's do 11:00 on tuesday")
        self.assertEqual(
            text_normalize("11:00 on tuesday"),
            "11:00 on tuesday")
        self.assertEqual(
            text_normalize("may 11"),
            "may 11")
        self.assertEqual(
            text_normalize("11 may"),
            "11 may")
        self.assertEqual(
            text_normalize("before 9"),
            "before 9:00")
        self.assertEqual(
            text_normalize('tomorrow 2-4?'),
            'tomorrow 2:00 - 4:00?')
        self.assertEqual(
            text_normalize('tomorrow 2-435?'),
            'tomorrow 2:00 - 4:35?')
        self.assertEqual(
            text_normalize('tomorrow 235-4?'),
            'tomorrow 2:35 - 4:00?')
        self.assertEqual(
            text_normalize('tomorrow 230-430?'),
            'tomorrow 2:30 - 4:30?')
        self.assertEqual(
            text_normalize('tomorrow 23-43?'),
            'tomorrow 23:43?')
        self.assertEqual(
            text_normalize('tomorrow 83-93?'),
            'tomorrow 83-93?')
        self.assertEqual(
            text_normalize('august 2-4?'),
            'august 2-4?')
        self.assertEqual(
            text_normalize('how about 2-4 october?'),
            'how about 2-4 october?')
        self.assertEqual(
            text_normalize('6?'), '6:00?')
        self.assertEqual(
            text_normalize('6 tomorrow?'), '6:00 tomorrow?')
        self.assertEqual(
            text_normalize('On Tuesday - 2pdt?'), 'on tuesday - 2:00 pdt?')
        self.assertEqual(
            text_normalize('On Tuesday - 2:12pdt?'), 'on tuesday - 2:12 pdt?')

Oh, lots of good ideas there! Thanks for sharing, I'll take a closer look later.

Sorry I can't share to substitution functions. Copyrighted by others. :(

I'm curious about these cases, was there a specific locale that uses slashes or hyphens for times like this?
        self.assertEqual(
            text_normalize("tomorrow 5/30?"),
            "tomorrow 5:30?")
        self.assertEqual(
            text_normalize('tomorrow 23-43?'),
            'tomorrow 23:43?')

I also like the idea of timezone abbreviations for a future version! Since pdt already handles explicit -0500 style offsets it's probably not too difficult to add, and I think that timezone handling could be an important use case for some people.
Anyway, regarding this pull request specifically, this is an interesting case from your examples that could apply here:
        self.assertEqual(
            text_normalize('around 630/7?'), 'around 6:30 / 7:00?')

I think it is a bit out of the scope though because there is an implicit relation between these times. For example, 6:30/7pm if / were allowed as a time prefix would parse as 6:30am and 7:00pm whereas the intent is for both to be in the evening. evalRanges uses logic like that to ensure that 6:30-7:00pm are both in the evening, but nlp would not. Also a common syntax, 6/7pm, would need some help because 6 by itself will not parse as a time so you would only get 7:00pm.
I'll call this one finished so that Mike can wrap up the PyPi release if he plans to do so this weekend.


Broken link in readme "The mechanism of testing framework"

https://github.com/aws-observability/aws-otel-test-framework/blob/terraform/README.md

I believe that this is a broken link in the readme
"we only validate if the data is received but not the data accuracy. The mechanism of testing framework"
are we supposed to redirect it to
docs/testing-framework-design.md ?

Yeah it looks like it was introduced in https://github.com/aws-observability/aws-otel-test-framework/commit/75271183d6fd0e5dfd89346cabcc76bbad0ebecd#diff-317d463c98c7b41aeefc76d17ad1300b2a443aea5919e7d51e45dd3d5cbe371d. I think it does make sense to change it to https://github.com/aws-observability/aws-otel-test-framework/blob/terraform/docs/testing-framework-design.md

Closed as it has been resolved


DSEGOG-11 word wrapping columns

Description
Adding word wrapping to column headers
Testing instructions

[ ] Review code
[ ] Check Actions build
[ ] Review changes to test coverage

Agile board tracking
Closes DSEGOG-11

Found a small bug, whereby word wrap on one column is reverted back to off if another column is added or removed
https://user-images.githubusercontent.com/71134574/181044307-90d3daa8-1ad2-45a7-93dc-14f063ac46ff.mp4
So this seems to be another consequence of the column widths reverting back to default as per https://stfc.atlassian.net/browse/DSEGOG-39?atlOrigin=eyJpIjoiNTQxN2E3NDkzOWFhNDhmOWE0YzFiYWMxMGNiY2M4ZmQiLCJwIjoiaiJ9. However, this problem may not occur in your Redux branch since you believe you've fixed the column widths bug (although I've yet to check this myself). If so, I'm happy to let this bug get merged into develop and then we update the redux branch from develop to make sure the bug is properly fixed there

Ugh, broken video. Give me a second to try again

yeah, this is the same bug that I would expect to be fixed by my redux PR - either by the changes I've already made or via storing the wordWrap state in redux itself

Here's what the video should have been.

I'll double check to make sure the bug is properly fixed when I review the other branch so I'll put a pin in this for now

@sam-glendenning there's a JIRA ticket tracking the resizing reset issue right? I'll add that the same thing happens to word wrapping, and then we can either close that issue if the redux PR fixes things or tackle it later


New Release for experimental package

Is there any additional work you need to do for the experimental InputMap API? Or can a new release be made that includes it so we can integrate it into RichTextFX?

The intention is for the experimental package (org.fxmisc.wellbehaved.event.experimental) to replace the current package (org.fxmisc.wellbehaved.event). I guess before doing that, I wanted to sanity-check that everything that is possible with the current package is possible with the experimental package. My way of doing that would be to try to port RichTextFX to the experimental package. If everything goes well, I would be confident to make the experimental package replace the current one for good.

I should have known: we did the same thing in RichTextFX with Flowless when removing the skin.
I'm currently working more on my own code, so I might have time to try this at the end of this week. Not sure yet. No doubt I'll be following your use cases document as a guide. Once implemented, we should probably include a demo in RichTextFX that shows how to override the default event handling. Or perhaps include that demo in this package and link to it from RichTextFX.

A new release was made, so this issue can be closed.


Deck Calibration: Adjust Z-Calibration

As a user, I would like to be able to adjust my robot's z-calibration before saving it.
Acceptance Criteria

[x] Modal includes visual guidance for jogging robot to calibration point
[x] Modal includes jog controls (#1244 and #1246)
[x] Modal includes button to 'Save Calibration and Continue'
[x] Modal includes 'Exit' button (button functionality out of scope)

Design

Zeplin
Invision

Implementation Notes

Note this does not include save function

This was closed by #1367


[bug] the trait Deserialize<'_> is not implemented for AppHandle

Describe the bug
Greetings everyone!
Error
I was trying to move the generate_handler! to an external init function.
However, an error is being thrown by the #[tauri::command] macro for the following function:
Function:
#[tauri::command]
pub fn add_profile(
    app_handle: tauri::AppHandle,
    storage: State<Mutex<AppConfig>>,
    profile: Profile,
) {}

Error:
error: the trait bound `AppHandle: Deserialize<'_>` is not satisfied
label: the trait `Deserialize<'_>` is not implemented for `AppHandle`

Oddly enough, I can access the State<> but not the AppHandle.
The init function looks like this:
pub fn init<R: Runtime>() -> impl Fn(Invoke<R>) + Send + Sync + 'static {
    generate_handler![
        get_app_config,
        get_datatype,
        get_object,
        create_object_store,
        add_profile // this function is the only one that doesnt work
    ]
}

This is the complete error:
error[E0277]: the trait bound `AppHandle: Deserialize<'_>` is not satisfied
   --> src\commands\command_handler.rs:58:1
    |
58  |   #[tauri::command]
    |   ^^^^^^^^^^^^^^^^^ the trait `Deserialize<'_>` is not implemented for `AppHandle`
...
96  | /     generate_handler![
97  | |         get_app_config,
98  | |         get_datatype,
99  | |         get_object,
100 | |         create_object_store,
101 | |         add_profile
102 | |     ]
    | |_____- in this macro invocation
    |
    = note: required because of the requirements on the impl of `CommandArg<'_, R>` for `AppHandle`
    = note: this error originates in the macro `__cmd__add_profile` (in Nightly builds, run with -Z macro-backtrace for more info)

For more information about this error, try `rustc --explain E0277`.
warning: `app` (bin "app") generated 1 warning
error: could not compile `app` due to previous error; 1 warning emitted

Reproduction

Copy the following function into your rust file:

pub fn init<R: Runtime>() -> impl Fn(Invoke<R>) + Send + Sync + 'static {
    generate_handler![
        /*  your commands that access AppHandle */
    ]
}

Call the function in the invoke_handler()

    tauri::Builder::default()
       // [...]
        .invoke_handler(command_handler::init())
       // [...]

Expected behavior
I expected it to work like the solution provided below:
Solution (thanks to @FabianLars#6748 on discord)
This error can be fixed by chaning the function signature of the init function to this
pub fn init() -> impl Fn(Invoke<Wry>) + Send + Sync + 'static {}

Platform and versions
Environment
› OS: Windows 10.0.19044 X64
› Webview2: 104.0.1293.47
› MSVC:
- Visual Studio Community 2022
- Visual Studio Build Tools 2017
› Node.js: 16.13.0
› npm: 8.1.0
› pnpm: Not installed!
› yarn: 1.22.19
› rustup: 1.24.3
› rustc: 1.61.0
› cargo: 1.61.0
› Rust toolchain: stable-x86_64-pc-windows-msvc
Packages
› @tauri-apps/cli [NPM]: 1.0.0 (outdated, latest: 1.0.5)
› @tauri-apps/api [NPM]: 1.0.2
› tauri [RUST]: 1.0.4,
› tauri-build [RUST]: 1.0.4,
› tao [RUST]: 0.12.1,
› wry [RUST]: 0.19.0,
App
› build-type: bundle
› CSP: unset
› distDir: ../dist/
› devPath: http://localhost:5173/
› framework: React
App directory structure
├─ .git
├─ .vscode
├─ dist
├─ gen
├─ node_modules
├─ public
├─ src
└─ src-tauri
Stack trace
No response
Additional context
The link to FabianLars's response on discord and my inital question:
https://discord.com/channels/616186924390023171/731495028677148753/1007558501893148682

you can just add a generic for AppHandle
#[tauri::command]
pub fn add_profile<R: Runtime>(
    app_handle: tauri::AppHandle<R>,
    storage: State<Mutex<AppConfig>>,
    profile: Profile,
) {}


Content Validation for Translation Words Lists

Steps:

login
org = unfoldingWord
resource = TWL
file = Titus

Next:

Click the CV button (document with check mark)
Validation running dialog with Spinner and Close button appears (see below)
Once complete, the dialog will go away and there will be one of two results:

An alert stating that no Validation Errors were found (see below)
A spreadsheet will be downloaded containing all the validation errors found.

I mangled an RCLink in RUTH.twl file, and CV reported the change
I fixed the same link and ran CV again, it is still reporting the error.


fix flaky beatree test

#539  👈
master

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @rphmeier and the rest of your teammates on  Graphite


There are a few bugs then play in a modal.

🐛 Bug Report
I have a page contains a list of videos, each click on a video will open a modal to play this video. But there are a few bugs, please help me out.
Can not destroy the player
I need to destroy the player when close the modal, otherwise it will continue play in background. And when I play the next video, the previous one should be destroyed too.
Duration info not in one line

Does it support auto play?
I have not found auto play prop in api doc.
To Reproduce
Here is my code. The file object is a state, it will be set when play another video.
        <Player
          id={`video-player-${file.id}`}
          title={file.meta.name}
          cover={file.thumbUrls.large}
          duration={0}
          sources={{
            'hd': {
              play_url: file.url,
              size: file.meta.size,
            }
          }}
          locale="zh-Hans"
        />

Run npx envinfo --system --binaries --npmPackages griffith --markdown --clipboard
## System:
 - OS: macOS 10.14.4
 - CPU: (4) x64 Intel(R) Core(TM) i5-4258U CPU @ 2.40GHz
 - Memory: 62.91 MB / 8.00 GB
 - Shell: 5.3 - /bin/zsh
## Binaries:
 - Node: 11.2.0 - /usr/local/bin/node
 - Yarn: 1.12.3 - /usr/local/bin/yarn
 - npm: 6.9.0 - /usr/local/bin/npm
 - Watchman: 4.9.0 - /usr/local/bin/watchman

hi @jaggerwang

Can not destroy the player

you can use ReactDOM.unmountComponentAtNode(target) to destroy the player or use some state to control the player shown.

Duration info not in one line

Could you please give me a demo for this problem? I can't find this case when my local context.

Does it support auto play?

No,  it does not support autoplay, but we should support it.
Will add this feature on this weekend.

The v1.5.0 version is already supported autoplay feature.
please enjoy it.


Add a CI

I am merging this, so that new PRs are tested by the CI to ensure the TOML syntax is valid.


Investigate why we don't see any catastrophic forgetting

We should have come across Catastrophic forgetting when doing experiment with the seq approach.
We did not, and I think we should aim to provoke this Catastrophic forgetting, to be sure our distributed learning code is not flawed. I think we should:

Have a real sequential approach (without any averaging)
Run simulation on stratified datasets with different minibatch sizes.

cc @bowni @Thomas-Galtier

I tried a few scenarios, indeed it seems difficult to observe. An hypothesis: because the validation dataset used in the fit() is global and representative of the whole data space; with a 'local' validation dataset corresponding to the data space of the local partner, we would overfit it at each round and observe the 'forgetting'.
What do you think @RomainGoussault @Thomas-Galtier ?

Below some results with the seq-pure approach:

The trends looks OK but I am unsure if we should see such good results with the pure-seq approch with one minibatch.
Two things we can try to investigate further:

Look at the loss for the pure-seq approch with one minibatch.
Implement a new file that learns on MNIST (without any multi partner learning) but with a stratified dataste and check if we see any castastrophic forgetting.

Also we should try with a more stratified scenario with 10 partner, each one with only one digit.

We don't see much in the loss --> https://github.com/SubstraFoundation/distributed-learning-contributivity/blob/486f58b91fd946ac1cf766fa1a859a9a3adc9796/notebooks/mpl_with_losses.ipynb

I launched the following new experiment:
   amounts_per_partner:
     - [0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1]
   samples_split_option:
     - [[1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific'], [1, 'specific']]

Results:

No, val_data is only used at the end of each epoch to evaluate the model:
From https://keras.io/api/models/model_training_apis/#fit-method:
validation_data: Data on which to evaluate the loss and any model metrics at the end of each epoch. The model will not be trained on this data.

@RomainGoussault could you put it in the saved experiments and name it Catastrophic Forgetting?


Wrong version published as nanopb-<IP_ADDRESS>.tar.gz

The nanopb-<IP_ADDRESS>.tar.gz that was available for download between 8.3.2019 and 21.3.2019 was accidentally created from the master branch, instead of 0.3 maintenance branch. The binary packages were unaffected, as they are created and named automatically.
You can confirm the version you have by checking NANOPB_VERSION in pb.h. If it is 0.4.0-dev, you have the erroneous package and I suggest changing to the version now available on download page.
I'll update my process so that this kind of manual mistake won't occur again.

(Reported in #387)


Remove unused import.

Codecov Report

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

@@           Coverage Diff           @@
##           master      #77   +/-   ##
=======================================
  Coverage   31.97%   31.97%
=======================================
  Files          44       44
  Lines        1251     1251
  Branches       45       45
=======================================
  Hits          400      400
  Misses        851      851

Impacted Files
Coverage Δ

...src/main/scala/net/scalax/fsn/mix/helpers/In.scala
10.52% <ø> (ø)
:arrow_up:

...t/scalax/fsn/slick/operation/SelectOperation.scala
1.38% <ø> (ø)
:arrow_up:

.../scala/net/scalax/fsn/slick/atomic/StrSelect.scala
100% <ø> (ø)
:arrow_up:

...alax/fsn/slick/operation/StaticManyOperation.scala
0% <ø> (ø)
:arrow_up:

...ain/scala/net/scalax/fsn/slick/atomic/Select.scala
0% <ø> (ø)
:arrow_up:

...scalax/fsn/mix/operation/PropertiesOperation.scala
29.52% <ø> (ø)
:arrow_up:

...a/net/scalax/fsn/common/helper/FAtomicHelper.scala
33.33% <ø> (ø)
:arrow_up:

.../main/scala/net/scalax/fsn/core/FAtomicQuery.scala
85.71% <ø> (ø)
:arrow_up:

...scala/net/scalax/fsn/mix/helpers/CRUDHelpers.scala
0% <ø> (ø)
:arrow_up:

...t/scalax/fsn/slick/operation/CreateOperation.scala
0% <ø> (ø)
:arrow_up:

... and 11 more

Continue to review full report at Codecov.

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


Add tracker name and tracker version

A common field to restrict on in SQL is v_tracker (e.g. v_tracker = 'js-2.6.0'). This format makes it somewhat difficult to restrict on at least a certain tracker version.
A solution might be to add tracker_name and tracker_version (with the version an integer, so it has order). This would make it easier to write conditionals to start using new features, such as the derived timestamp.

It's probably easiest if we design a new (small) context for this for the trackers and add some "legacy migration" code into Snowplow to take an existing string like 'js-2.6.0' or 'java-0.5.0-rc1' and reverse generate the context...

In the release where we did this, it would be kind to also release migration scripts to backfill a Redshift database's tracker_context table based on v_tracker.

That all sounds good.

Move to protocols repo


Call for Maintainers

While @blaggacao, @Pacman99 and myself have become busier with personal obligations, we've noticed a lag in our ability to maintain the project. There are several members of the community besides ourselves who have been very active, and we'd be more than happy for the help if anyone is up to the task. Please feel free to drop a reply in this issue if you'd like to help!

Does this apply to the related divnix projects; digga and bud? I currently use devos in several production projects and have plans for more so I certainly have a vested interest in keeping everything functional.
Since I haven't directly contributed more than the occasional bug report I'm may not be the best fit for a maintainer currently but I have started reviewing many of the open tickets & PRs. I can certainly help work through those.
I'm not sure what the current roadmap or priorities for devos/divnix are but there are a few areas I will be looking into:
Better home-manager integration and user management.

Taking advantage of any upstream home-manager improvements like proper 2.4 profile support, etc.
Making the usage of portable HM users and system users a bit cleaner would be nice.
(Mostly a home-manager issue) Provide a unified way to define a user's SSH authorized keys for both system users and portable users.
Documenting a method for setting home-manager defaults.
Support for LDAP/unknown/generic users.

Deployment improvements

(Mostly an deploy-rs issue) Adding support password protected SUDO/privileges escalation methods.
Workflow for automatically updating the nixpkgs inputs so Nix's autoUpgrade feature can install routine package updates.
Possible bud improvements or integration with makes (at least once it gets proper flake support).

yes, I should have clarified that in the original announcement, but this is geared toward maintainership of digga as well.

I do want to note that I don't plan to stop maintaining these projects. And I think the future of the projects are relatively secure. I use digga for a number of computers, so I have a stake in keeping them maintained.
I can commit to dealing with bugfixes, updates, and PR reviews - they just might take me some time to get to. Over time I'll try to keep improving the documentation.
I think the main reason for this post is to find people who have the capacity to develop new features and get to those chores faster than we can.

We have a new maintainer onboard! Welcome @montchr :)

Thank you!


Feat:Adding a script for google trends

Describe the feature
Script using BeautifulSoup to provide you Google search and Trend Result.
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC 23 contributor
[X] I want to work on this issue

Go ahead @alwenpy
Note

Create a separate module for this, as per the folder and project structure
Do not use the `selenium web driver as it is not compatible with all devices as well as cloud platforms.
Before making any changes, check if the module you want to add already exists or not. If yes, then add your functionality as a method only else make a separate module and class for it.

I am using Pytrends library that is an API for Google Trends

No no, we are building an API alternative and can not use an API beneath, then what's the point?
Do it with scraping,  using libraries that are  compatible on all the devices like bs4 and scrapy.


Feature/ctype limit

Hold off on this... need to patch the problem that caused failure on 8638276

That should be better. I'm open to suggestions about how to better test this.
It may require destroying the RDF::Marmotta constant and reloading it to do any better than what is here.

Issue submitted to Marmotta: https://issues.apache.org/jira/browse/MARMOTTA-585

Other than my point about documentation I think this is OK. :squash: if you think it's right.

Comments: added.
Branch: squashed.
Ball: in your court. :tennis:

:basketball: :+1:


Remove legacy feature gate EnableAggregatedDiscoveryTimeout for Aggregation layer

Feature gate EnableAggregatedDiscoveryTimeout has been removed in version 1.17. Remove the legacy instruction here.
Details at kubernetes/kubernetes#82472.

/assign @kbarnard10

Page preview:
https://deploy-preview-25460--kubernetes-io-master-staging.netlify.app/docs/concepts/extend-kubernetes/api-extension/apiserver-aggregation/#response-latency

Thanks @gavinfish .
/lgtm

/approve

#26849 is proposed to fix the integrity of the feature-gate table.


docs: add jit compiler to tailwind config

The JIT compiler generates styles on-demand and increases the browser performance in development.
Reference:
Tailwind JIT
fixes #581

You can always do this yourself if you want to.
V3 will use JIT automatically btw

You can always do this yourself if you want to.
V3 will use JIT automatically btw

I understand your point but for now tailwind v3 is in alpha state and I have no insights into it. The majority is using jit mode and why not forcing a recommendation to use it. Using the inspector with all classes can end up in some annoying developer experience.
At the end this is addressed in v3 and I have no emotions on it.

I think it's fair the Remix team only pushes the defaults Tailwind is providing (by doing tailwindcss init), but I also don't have a strong opinion on this

already done in Commit


Warning module not found

More information
When compiling jollyday I get the following warnings:
[...]
[INFO] --- compiler:3.12.1:compile (default-compile) @ jollyday-core ---
[INFO] Recompiling the module because of changed source code.
[INFO] Compiling 75 source files with javac [debug target 11 module-path] to target/classes
[WARNING] system modules path not set in conjunction with -source 11
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[17,28] module not found: de.focus_shift.jollyday.jaxb
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[18,28] module not found: de.focus_shift.jollyday.jackson
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[19,36] module not found: de.focus_shift.jollyday.jackson.test
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[20,33] module not found: de.focus_shift.jollyday.jaxb.test
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[22,36] module not found: de.focus_shift.jollyday.jackson.test
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[23,33] module not found: de.focus_shift.jollyday.jaxb.test
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-core/src/main/java/module-info.java:[7,39] package is empty or does not exist: focus_shift.de.jollyday.schema.holiday
[INFO]
[...]
[INFO] --- compiler:3.12.1:compile (default-compile) @ jollyday-jackson ---
[INFO] Recompiling the module because of changed dependency.
[INFO] Compiling 45 source files with javac [debug target 11 module-path] to target/classes
[WARNING] system modules path not set in conjunction with -source 11
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-jackson/src/main/java/module-info.java:[23,36] module not found: de.focus_shift.jollyday.jackson.test
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-jackson/src/main/java/module-info.java:[26,36] module not found: de.focus_shift.jollyday.jackson.test
[INFO]
[...]
[INFO] --- compiler:3.12.1:compile (default-compile) @ jollyday-jaxb ---
[INFO] Recompiling the module because of changed dependency.
[INFO] Compiling 47 source files with javac [debug target 11 module-path] to target/classes
[WARNING] system modules path not set in conjunction with -source 11
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-jaxb/src/main/java/module-info.java:[20,33] module not found: de.focus_shift.jollyday.jaxb.test
[WARNING] /home/[...]/Documents/[...]/jollyday/jollyday-jaxb/src/main/java/module-info.java:[22,33] module not found: de.focus_shift.jollyday.jaxb.test
[INFO]
[...]

Note: I only have JDK 17 installed, which might be the cause for [WARNING] system modules path not set in conjunction with -source 11.

The module warnings are, because the modules has not been build to this time and therefore the warning or I am wrong?

see https://stackoverflow.com/questions/53670052/how-to-define-qualified-exports-to-unknown-modules
and https://stackoverflow.com/questions/53712924/unable-to-resolve-module-using-module-source-path/53717183#53717183


forge create and forge build does not report error when code size exceeds 24576 bytes

Component
Forge
Have you ensured that all of these are up to date?

[X] Foundry
[X] Foundryup

What version of Foundry are you on?
forge 0.1.0 (98f0771 2022-02-25T00:34:31.840096006+00:00)
What command(s) is the bug in?
forge create
Operating System
Linux
Describe the bug
When using forge create --optimize --optimize-runs 20000 and forge build --optimize --optimize-runs 20000 on these contracts there's no error reported. However both remix and hardhat report error "Warning: Contract code size is 28394 bytes and exceeds 24576 bytes"
As a result the deployed contracts cannot be verified on etherscan.

For which contracts are you facing this? I just cloned and ran forge b --optimize-runs 20000 --force:
Compiling...
Compiling 39 files with 0.8.11
Compilation finished successfully
Compiler run successful (with warnings)
Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:111:34:
    |
111 |             (uint32 totalWeight, uint96 b, uint32 c, uint96 d) = nftwEscrow.rewardsPerWeight();
    |                                  ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:111:44:
    |
111 |             (uint32 totalWeight, uint96 b, uint32 c, uint96 d) = nftwEscrow.rewardsPerWeight();
    |                                            ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:111:54:
    |
111 |             (uint32 totalWeight, uint96 b, uint32 c, uint96 d) = nftwEscrow.rewardsPerWeight();
    |                                                      ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:115:35:
    |
115 |             (uint32 stakedWeight, uint96 e, uint96 f) = nftwEscrow.rewards(users[0]);
    |                                   ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:115:45:
    |
115 |             (uint32 stakedWeight, uint96 e, uint96 f) = nftwEscrow.rewards(users[0]);
    |                                             ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:182:34:
    |
182 |             (uint32 totalWeight, uint96 b, uint32 c, uint96 d) = nftwEscrow.rewardsPerWeight();
    |                                  ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:182:44:
    |
182 |             (uint32 totalWeight, uint96 b, uint32 c, uint96 d) = nftwEscrow.rewardsPerWeight();
    |                                            ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:182:54:
    |
182 |             (uint32 totalWeight, uint96 b, uint32 c, uint96 d) = nftwEscrow.rewardsPerWeight();
    |                                                      ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:186:35:
    |
186 |             (uint32 stakedWeight, uint96 e, uint96 f) = nftwEscrow.rewards(users[1]);
    |                                   ^^^^^^^^

Warning: Unused local variable.
   --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/NFTWEscrowRental.t.sol:186:45:
    |
186 |             (uint32 stakedWeight, uint96 e, uint96 f) = nftwEscrow.rewards(users[1]);
    |                                             ^^^^^^^^

Warning: Function state mutability can be restricted to view
  --> /Users/gakonst/oss/NFT-Worlds-Staking-Rental-Contract/src/test/mock/MockNFTW721.sol:16:5:
   |
16 |     function updateMetadataIPFSHash(uint _tokenId, string calldata _tokenMetadataIPFSHash) external {
   |     ^ (Relevant source part starts here and spans across multiple lines).

@gakonst if forge doesn't report on oversized contracts, how should the user know? Am I missing something?

test contracts are not supposed to be deployed, so we do not report that warning as it's pointless and ends up cluttering your screen, we are reporting warnings otherwise


Proposal : Adding Cybersecurity Educational Resources links.

Adding Links for

Online training grounds and practice challenges
Online courses and materials
Capture the Flag (CTF) games

Hey @DhanushNehru
can you please add the label of hacktoberfest-accepted


xpublish as a jupyverse plugin

Jupyverse is a new Jupyter server implementation based on FastAPI and a plugin system. It could be interesting to provide xpublish as an FPS plugin, as it would allow to create a JupyterLab extension for Zarr visualization.

@davidbrochart - if you could provide a brief summary of what would have to change in xpublish to support integration with Jupyverse, that would be super helpful here.

Thanks for pinging me @jhamman.
I opened #102, where I started declaring the routers in base, common and zarr as FPS routers. Nothing much, but with this, after installing xpublish and running jupyverse you should see your endpoints at e.g. http://<IP_ADDRESS>:8000/docs#/xpublish.


Fetch channels

This is work in progress, so please don't merge yet.
These are some of the things we should do before merging this feature into master:

Remove channel id from settings. To be able to do that we have to refactor the "post as reply"-feature a bit because currently there is the channel id needed to post replies.
reduce settings dialog after channel id has been removed from settings
split channellist and channel class into separate files
fix redundancy of Channel class in OutlookMatters/Mattermost/Session/Channels.cs and OutlookMatters/Mattermost/ChannelList.cs
move constant for subscribed channels from MailItemContextMenuEntry to some place within the mattermost namespace (because - semantically - the constant is part of the REST API)
restructure test assembly to mirror the production assembly

Current coverage is 58.58%

Merging #35 into master will increase coverage by +2.42% as of f459de2

@@            master     #35   diff @@
======================================
  Files           34      35     +1
  Stmts          641     693    +52
  Branches        25      28     +3
  Methods
======================================
+ Hit            360     406    +46
  Partial          1       1
- Missed         280     286     +6

Review entire Coverage Diff as of f459de2

Powered by Codecov. Updated on successful CI builds.


Add Clusters Table and Cluster Activity Table to MySQL Database

This PR introduces the clusters and cluster_activity tables in the MySQL database to effectively store and manage cluster data.
Database Schema
CREATE TABLE IF NOT EXISTS cluster (
    cid INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    owner_id INT UNSIGNED NOT NULL,
    machine_type VARCHAR(255) NOT NULL,
    number_of_machines INT NOT NULL,
    creation_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    status ENUM('LAUNCHING', 'LAUNCHED', 'PAUSING', 'PAUSED', 'RESUMING', 'TERMINATING', 'TERMINATED'),
    FOREIGN KEY (owner_id) REFERENCES user (uid) ON DELETE CASCADE
) ENGINE = INNODB;

CREATE TABLE IF NOT EXISTS cluster_activity (
    id INT AUTO_INCREMENT PRIMARY KEY,
    cluster_id INT NOT NULL,
    start_time TIMESTAMP NOT NULL,
    end_time TIMESTAMP NULL,
    FOREIGN KEY (cluster_id) REFERENCES cluster (id) ON DELETE CASCADE,
    INDEX (cluster_id, start_time)
) ENGINE = INNODB;

Lifecycle

Cluster Launch:

Insert a record into the cluster table with the status set to "LAUNCHING."
TODO: The Go program launches the cluster.
Update the status to "LAUNCHED."
Insert a record into the cluster_activity table with end_time set to NULL.

Cluster Termination:

Update the cluster status to "TERMINATING."
TODO: The Go program terminates the cluster.
Update the status to "TERMINATED."
Update the end_time in the cluster_activity table.

Cluster Pause:

Update the cluster status to "PAUSING."
TODO: The Go program pauses the cluster.
Update the status to "PAUSED."
Update the end_time in the cluster_activity table.

Cluster Resume:

Update the cluster status to "RESUMING."
TODO: The Go program resumes the cluster.
Update the status to "LAUNCHED."
Insert a new record into the cluster_activity table with end_time set to NULL.

HTTP Endpoints
Note: The endpoint details are subject to change during frontend implementation.

/cluster/create: Creates a new cluster and records the start time in cluster_activity.
/cluster/delete: Deletes a cluster and records the termination time in cluster_activity.
/cluster/pause: Pauses a cluster and records the pause time in cluster_activity.
/cluster/resume: Resumes a paused cluster and records the resume time in cluster_activity.
/cluster/update/name: Updates the name of a cluster.
/cluster: Lists all clusters owned by the authenticated user.

Handled all of the comments.