Suggestion: remove bare import statements

The only one dependence in lit-element is lit-html. (Thanks for removing @polymer/polymer.)
There are three methods to use lit-element

use bundlers(such as webpack)
use unpkg query parameters(?module)
use import-maps

But it is painful to use lit-element as es modules without any extra specific effort.

I cannot import lit-element form ./node_modules as my demo project.
I cannot import lit-element from other CDN. They don't support to rewrite bare import statements as unpkg doing.
CDN rewriting will cause SRI verification to fail.
import-maps is perfect in the future, not now.

Maybe it is better to remove bare import statement from lit-element.
There are only two functions/classes used in lit-element which is imported from lit-html.
render function:
https://github.com/Polymer/lit-element/blob/46c8f404937672ed10587124ec3ddee82fd005fe/src/lit-element.ts#L76
TemplateResult:
https://github.com/Polymer/lit-element/blob/46c8f404937672ed10587124ec3ddee82fd005fe/src/lit-element.ts#L213
I did some try, here is my idea.
- static render = render;
+ static render: typeof render;

or
- static render = render;
+ static render: typeof render = () => {
+     throw new Error("not implemented");
+ };

When the users are going to use LitElement, they have to inject the render function themselves first.
import { render, html } from "https://some.cdn/lit-html.js";
import { LitElement } from "https://some.cdn/lit-element.js";

LitElement.render = render;

class MyElement extends LitElement {
  // some other details...
}
customElements.define("my-element", MyElement);

It's ok to create a wrapper file which imports lit-html and injects render function automatically. It will keep compatibility.
import { render } from "lit-html";
import { LitElement } from "./lit-element";

LitElement.render = render;

export { LitElement };
export { html, svg, TemplateResult, SVGTemplateResult } from "lit-html/lit-html.js";
// ...

As for TemplateResult, we may need a flag in lit-html.
- if (templateResult instanceof TemplateResult) {
+ if (templateResult.flagOrAnotherName === Symbol.for("TemplateResult")) {

It is my rough idea. There will, of course, be a lot more details when we get started for real.
Do you have any ideas?
Related issue: #140

It seems that the TemplateResult will be deleted in  #712 .

@magic-akari — bare specifiers is the best practice moving forward
here are some compelling options you can use today

use an instant bundle from the amazing new pika cdn: https://cdn.pika.dev/lit-element
this contains lit-html
it's like unpkg, but for bundles!
you can link to the bundle directly, or download it locally.
this can be bad for peer dependency scenarios if you use more than one pika bundle (easy to load the same package redundantly multiple times)

use your own bundle build step
resolves peer dependencies properly.
highly optimal

use import maps today with guy bedford's fantastic es-module-shims
i absolutely love this import maps polyfill!
resolves peer dependencies via your import map rules :dark_sunglasses:

cheers!
👋 Chase

@chase-moskal Thanks for your recommendation. Pika is awesome.
There is another problem with lit-element. lit-element import and export part of lit-html.
It will be ok to use pika if lit-element exports everything from lit-html. see https://github.com/Polymer/lit-element/issues/603#issuecomment-501528498
If you need the lit-html directives which not exported from lit-elements, you have to import lit-html and bear the burden of loading duplicate resources.

@magic-akari you can try using https://github.com/pikapkg/web if you want to avoid bundlers.

@magic-akari

Pika bundle lit-html into lit-element and you cannot use any directives from lit-html.

ah, yes, i understand — lit-element isn't exposing everything you want from lit-html
i think the best solution for your use-case, to give you more control, would be to use es-module-shims, and configure an import map
then you can use es modules with bare specifiers, and you can configure (via import map) the browser where to fetch lit-element and lit-html (like for example, locally, or from unpkg), and so then you can import your directives from "lit-html", and lit-element will be internally using the same copy of lit-html (so you win by avoiding any duplication) — by the way, i've made this funny little tool called importly to help me generate my import maps
using your own bundler is another option, but requires a build step
also @pika/web is a really compelling option for package management as well!


MGDOBR-69: Store whole processors as jsonb

MGDOBR-69
Scope of this PR
This PR changes the way processors are stored inside the PostgreSQL database: the whole processor definition is now stored in a single jsonb column inside the processor table. The previous implementation used separate tables to store the processor and its subcomponents (filters, action and action parameters).
The reason for this change is that with the old implementation the rigidity of such a database schema was not justified by a real need to query the internal structure of the processor while the new approach makes it easier and more flexible to store all the data.
I chose jsonb because it's a very efficient way to store JSON inside PostgreSQL databases and it still enables querying the data in case unexpected needs emerge.
Changes introduced

Added new migration that deletes the unused tables and adds the definition column (of type jsonb) to the processor table.
Modified manager to handle the new data structure.
Modified manager tests of service beans to use PostgreSQL istead of H2 because the new migration was failing. I think there's no point in using H2 now that with testcontainers it's so easy to spin up a PostgreSQL container since we want to apply migrations. Supporting H2 means either we only support the common SQL between PostgreSQL and H2 (excluding a lot of cool features) OR we must write different migrations whenever you encounter a difference (which is a waste of time imho).
Created test-utils module to reuse common test resources between manager and runner (caused by the previous point).

PR requirements
Please make sure that your PR meets the following requirements:

[x] Your code is properly formatted according to this configuration
[x] Your commit messages are clear and reference the JIRA issue e.g: "[MGDOBR-1] - $clear_explanation_of_what_you_did"
[x] All new functionality is tested
[x] Pull Request title is properly formatted: MGDOBR-XYZ Subject
[x] Pull Request contains link to the JIRA issue
[x] Pull Request contains link to any dependent or related Pull Request
[x] Pull Request contains description of the issue
[x] Pull Request does not include fixes for issues other than the main ticket

Can you please update DEMO.md with the new processor request structure? Thanks!

No need to do this since the user APIs are not changed by this PR.


testing codecov status check

Codecov Report

Merging #37 (192c5e1) into main (54914ed) will not change coverage.
The diff coverage is 100.00%.

@@           Coverage Diff           @@
##             main      #37   +/-   ##
=======================================
  Coverage   99.85%   99.85%
=======================================
  Files          38       38
  Lines         673      673
  Branches      119      119
=======================================
  Hits          672      672
  Misses          1        1

Impacted Files
Coverage Δ

App.tsx
100.00% <100.00%> (ø)

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 54914ed...192c5e1. Read the comment docs.


no valid urls.py

Hey,
trying to add this to a Django project, I receive this error message:

django.core.exceptions.ImproperlyConfigured: The included URLconf '<module 'allauth_saml2.urls' from `[...]/.direnv/python-3.8.5/lib/python3.8/site-packages/allauth_saml2/urls.py'>' does not appear to have any patterns in it. If you see valid patterns in the file then the issue is probably caused by a circular import.

And indeed, that file does not include valid url patterns. Is that on purpose?

I'd be interested to know that, too. The pattern in the urls module usually looks like this:
from allauth.socialaccount.providers.oauth2.urls import default_urlpatterns

from .provider import CustomProvider

urlpatterns = default_urlpatterns(CustomProvider)

Maybe SAML2 can't be integrated like that? @davidmgvaz could you clarify?

@bittner it is like that I have been using it. The docs should be improved. If any of you are willing to give a hand and make a pull request that would be wonderful, otherwise I will try to do that asap.

@davidmgvaz Is it possible that you forgot to check something into the github repository? As it is, Django won't start for me, throwing the above-mentioned error. I can try to fix it, but it would seem that there must be something more in your setup that is not present here and if that is the case, it will likely be easier for you to just add that here then me trying to figure out what it is.

The pattern I use is to define a Custom Provider and define a urls following the @bittner example. As soon as get to a computer I will try to give a complete example

@davidmgvaz Thank you. Looking forward to it!


Add ability to enable/disable file saving

I want to save the samples from my SDR - but only after a certain event has occurred. Adding an enable/disable option to the file sink seems something that might be useful to others?

FWIW, there is also a stream/Gateway.cpp block that can serve this purpose. It can "FORWARD", "BACKUP", or "DROP". But I dont see the harm in making file sink more useful.


chore: fix backport workflow (#655)

Backport
This will backport the following commits from k8s-22/main to k8s-20/main:

chore: fix backport workflow (#655)

Questions ?
Please refer to the Backport tool documentation

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 657

Questions ?
Please refer to the Backport tool documentation


Inner join calls RowIter on one of the leafs more than one time, breaking indexes

What InnerJoin does is call RowIter of the right table once for each row of the left table. Since the node is reused, so is the sql.IndexLookup, which cannot be reused because it automatically releases the index when it is done.

The easiest way to fix this is that releaserIndexLookup (which will be renamed to managedIndexLookup) can renew the indexes instead. There is 1 downside to this, though: the index can be removed between the release and the renew and make the query fail.
Any other way to do this would involve a more sophisticated per-query retain/release for the indexes.


Resampling actor revised

Summary of this PR:

I am already keeping in mind that we want to make it work for historical data, but I believe we want to get it to work with live data stream and thus start_time is explicitly set to None.

Subscriptions for data are made through channels and these are the essential classes for doing that:

class Subscription:
    time_series_id: TimeSeriesId  # aka (component_id, metric_id)
    start_time: Optional[datetime] = None

Describes what data the consumer is interested in and from which point of time. (aka channel_id)
class SubscriptionResponse:
    receiver: Receiver[[Sample]
    subscription: Subscription

Response with a receiver for a specific subscription, i.e. (component_id, metric_id, start_time).
class SubscriptionRequest:
    sender: Sender[SubscriptionResponse]
    subscription: Subscription

Request specifying the object of subscription and where to send the response.

DataProvider interface is just a temporary interface, because it is still not entirely clear to me if the ResamplingActor will be getting raw data from DataSourcingActor or through the global channel registry. All the ResamplingActor needs, is to be able to call a method with subscription parameters (time_series_id, start_time) and get a Receiver to start ingesting the data for that subscription. Where the Receiver comes from, whether from the DataSourcingActor or from the global channel registry, is transparent to the ResamplingActor.

TimeSeriesResamplingActor glues everything together, where the most relevant part is:

self._input_receivers: Dict[TimeSeriesId, Receiver[Sample]] = {}
self._output_channels: Dict[TimeSeriesId, Broadcast[Sample]] = {}

which essentially says that for each unique TimeSeriesId (later to also include start_time) it will have a single receiver for getting raw data (provided either from DataSourcingActor or global channel registry) and for each unique TimeSeriesId it will hold a broadcast channel from which multiple consumers can get an instance of Receiver[Sample] to receive resampled data.

Thinking if we shouldn't make component_category part of TimeSeriesId so that the string representation will look like so:
meter_123_active_power instead of 123_active_power. It might make it a bit more obvious what it refers to, e.g. while debugging.
If we print 123_active_power, we would have to check the component 123 in the graph to see its category, and with meter_123_active_power it will be more obvious.

Thinking if we shouldn't make component_category part of TimeSeriesId so that the string representation will look like so: meter_123_active_power instead of 123_active_power. It might make it a bit more obvious what it refers to, e.g. while debugging.
If we print 123_active_power, we would have to check the component 123 in the graph to see its category, and with meter_123_active_power it will be more obvious.

Yeah, for debugging purposes it could be a good idea. I just hope that nobody uses this in code to figure out the component category without getting the actual component info.
BTW, to get which component is it, it shouldn't be necessary to use a component graph! I think you mean just getting the component info from the microgrid API (not sure if we have a proper function to do this). I think we should try to avoid using these interchangeably because we already got into a lot of confusion by assuming a lot of stuff needed the component graph when it really didn't.

RingBuffer's items cannot be just some arbitrary type T, because it is required that they have timestamp attribute (it is used for preserving the order of items in the buffer and to discard the oldest item when the buffer is full)

I don't think this is true. A ring buffer just needs to overwrite old values when it is full. It is not supposed to be sorted or to do reshuffling or to know the underlying value being saved.

I had to add an additional type for the Key, because items don't hold any information about component_id or metric_id, so it has become RingBuffer(Generic[K, V]), which is then used like this RingBuffer[TimeSeriesId, float] to hold samples of type float associated with keys of type TimeSeriesId

This is not necessary either because RingBuffer doesn't need to know anything about the data type it is storing.

I had to add an additional type for the Key, because items don't hold any information about component_id or metric_id, so it has become RingBuffer(Generic[K, V]), which is then used like this RingBuffer[TimeSeriesId, float] to hold samples of type float associated with keys of type TimeSeriesId

This is not necessary either because RingBuffer doesn't need to know anything about the data type it is storing.

Agree, we clarified this on Slack.

In regards to:

RingBuffer's items cannot be just some arbitrary type T, because it is required that they have timestamp attribute (it is used for preserving the order of items in the buffer and to discard the oldest item when the buffer is full)

I don't think this is true. A ring buffer just needs to overwrite old values when it is full. It is not supposed to be sorted or to do reshuffling or to know the underlying value being saved.

and

I think the ring buffer implementation is way too complicated and way too specific. I was suggesting putting it in the core package too so it is something that can be reused. We even have a trivial ad-hoc ring buffer implementation in the channels repo (receivers in Broadcast use a ring buffer for example).

OK, in both of these cases the time is not important and in case of resampling I believe it is (most recent samples are more relevant than the older ones), but if DataSource actor will provide samples in order, then we can indeed simplify the ring buffer and do it as described on Wikipedia or in frequenz-channels.

OK, in both of these cases the time is not important and in case of resampling I believe it is (most recent samples are more relevant than the older ones), but if DataSource actor will provide samples in order, then we can indeed simplify the ring buffer and do it as described on Wikipedia or in frequenz-channels.

I assume this is the case, if we call it timeseries it has to be in order.
I think the data sourcing actor would be the right place to make sure things come in order because is the one that can make assumptions about the source (for example for the microgrid API and local parquet files order should be guaranteed anyway, only if we receive data from a distributed source, where samples from different nodes are received, so they can arrive out-of-order, some reordering would be needed).
But @sahas-subramanian-frequenz please confirm if you agree.

Describes what data the consumer is interested in and from which point of time. (aka channel_id)
class SubscriptionResponse:
    receiver: Receiver[Optional[Sample]]
    subscription: Subscription

It looks like there will be no response for subscriptions, and the receiver end will have to pass a channel name where to put the requested data. This just came up in the data sourcing actor issue:

#30

But @sahas-subramanian-frequenz please confirm if you agree.

yup,  each metric stream from the data source actor would be a time series,  in increasing order of time.

Just one more important thing: Order is being decided by the Resampling actor! But even in that case we should not assume that samples arrive in order in the LogicalMeter. Thats why we added this part here:
Please watch the red notice on the lower left hand side!

I think the data sourcing actor would be the right place to make sure things come in order because is the one that can make assumptions about the source

Not being the bad guy here but what if not. What if its important to receive the timestamp as early as possible because we need this data to fill a gap in the ring buffer for interpolation/extrapolation purposes. The DataSource actor might not understand what this is used for in the Resampler. The idea of the ring buffer in the Resampler is to be able to sort it and also insert data that might arrive a little later than other timestamps.
The Resampler has three choices when data arrives what to do with it if I'm not mistaken:

Use it for resampling in the current time window
Put it into the ring buffer for future extrapolation purposes if needed
Throw it away if its older then the last timestamp in the ring buffer

Summarzing that for at least the Microgrid data stream we might not need that. It might be different though for the parquet data stream.

@thomas-nicolai-frequenz I believe that the design for the ring buffer has changed since we last spoke about it.
Most recently I was told that the resampler can rely on data source to provide data in a sorted order so the ring buffer doesn't know anything about timestamps. It just adds items on one end and drop items on the other end if the buffer is full.
Please see details here:
https://github.com/frequenz-floss/frequenz-sdk-python/pull/32#issuecomment-1280823805

Use case documentation is missing. @jakub-toptal  could you please add it?

Not being the bad guy

Oh, yes you are :imp:

here but what if not. What if its important to receive the timestamp as early as possible because we need this data to fill a gap in the ring buffer for interpolation/extrapolation purposes. The DataSource actor might not understand what this is used for in the Resampler. The idea of the ring buffer in the Resampler is to be able to sort it and also insert data that might arrive a little later than other timestamps.

If this is the case, then for me is a case for removing the RingBuffer abstraction, as this is not really a ring buffer, is much more complicated. Then the single resampler can do it by using a deque directly, which supports insert operations and know about the values stored in the buffer (i.e. it knows about timestamps).
Let's discuss this elsewhere and add the re-ordering in a separate PR if we want to do it here.

To just stress the point: The RESAMPLER (upper case lol) takes care about order. It has to by the reason of its sole existence but the DataSource actor might not know if delivering fast will better then holding back and sorting at least when it comes to the Microgrid data stream. Its different with Parquet though I think but I'm not sure why that data should be out of order or how that could happen. May it be, that we are confusing order in a single time series with synchronization across different data streams? Why should the data out of parquet not be in order for a single metric?

I see your point and agree it's better for the resamplers to deal with out of order data, but this means the resampler is not using timeseries as input anymore, because timeseries need to be ordered by timestamp. So the resampler receives a stream of samples and produces a timeseries as output.
But let's leave this for a new PR, it will just complicate and delay the reviewing of this PR. I created an issue for it:

#47

FYI @jakub-toptal , tests are failing for python 3.9 and 3.10 (I didn't check why though).

FYI @jakub-toptal , tests are failing for python 3.9 and 3.10 (I didn't check why though).

@leandro-lucarella-frequenz  I tried to follow your suggestion on converting the code to produce samples using a generator expression, but I am having problems getting the types and docstrings right.
I made mypy and pylint happy with the following:
    def resample(self) -> Generator[Tuple[TimeSeriesId, Sample], None, None]:
        """Resample samples for all time series.

        Returns:
            iterator of time series ids and their newly resampled samples
        """
        now = datetime.now(tz=pytz.UTC)
        for time_series_id, resampler in self._resamplers.items():
            yield time_series_id, Sample(timestamp=now, value=resampler.resample())

but darglint complains about this:
nox > darglint src examples
src/frequenz/sdk/data_ingestion/resampling/timeseries_resampler.py:resample:110: DAR301: - yield
src/frequenz/sdk/data_ingestion/resampling/timeseries_resampler.py:resample:113: DAR202: + return

I don't know if it is yet another case when darglint cannot this type annotation? If you have any ideas on how we could solve this, please share. I see the following options:

ignore darglint in this case
change to method not to use a generator expression, but a list instead

I don't know if it is yet another case when darglint cannot this type annotation? If you have any ideas on how we could solve this, please share. I see the following options:

I think the solution is to say Yields: instead of Returns: in the docstring

I think the solution is to say Yields: instead of Returns: in the docstring

@jakub-toptal :arrow_up:

This PR is having way too much open discussions. @jakub-toptal can you fix the small things that are pending and start closing discussions that are already resolved.
@leandro-lucarella-frequenz I have gone through all the comments since the beginning of this PR and collapsed the discussions that I thought are resolved.

OK, so the data sourcing actor is almost ready, so we have much more clarity on how the resampler needs to subscribe to data.
Key changes needed in this PR:

Remove the DataProvider.
Remove the core package entirely.
Remove the Sample class and use the one in data sourcing instead.
Remove subscriptions.py entirely.
ComponentMetricsResamplingActor

Rename TimeSeriesResamplingActor to ComponentMetricsResamplingActor (and the file names too).
Take a channel sender in the constructor to send subscriptions to the data sourcing actor.
Take a channel receiver in the constructor to receive subscriptions.
Use the data sourcing actor ComponentMetricRequest class as the subscription request message.
When forwarding the request, we need to change the request namespace. Probably append a _data_source suffix? @sahas-subramanian-frequenz maybe you can give your opinion as I never had this approach very clear in my head in terms of channels management.

Please see the data sourcing actor PR for more details, and rebase on top of it if needed:

#52


chore(semantic-release): update and add semantic release deps

This is updating changelog dep and adding some other plugins

Actually not needed.


Source release scripts

Closes #135
Pull Request Description
What issue does this change request address? (Use "#" before the issue to link it, i.e., #42.)
#135
What are the significant changes in functionality due to this change request?
The packaging scripts now work with a combined crow and RAVEN repository.

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[x] 1. Review all computer code.
[x] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts).
[x] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details.
[x] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass.
[x] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True.
[x] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync.
[x] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done.
[x] 8. If an analytic test is changed/added is the the analytic documentation updated/added?

For Change Control Board: Change Request Review
The following review must be completed by an authorized member of the Change Control Board.

[ ] 1. Review all computer code. ok
[ ] 2. If any changes occur to the input syntax, there must be an accompanying change to the user manual and xsd schema. If the input syntax change deprecates existing input files, a conversion script needs to be added (see Conversion Scripts). n/a
[ ] 3. Make sure the Python code and commenting standards are respected (camelBack, etc.) - See on the wiki for details. ok
[ ] 4. Automated Tests should pass, including run_tests, pylint, manual building and xsd tests. If there are changes to Simulation.py or JobHandler.py the qsub tests must pass. ok
[ ] 5. If significant functionality is added, there must  be tests added to check this. Tests should cover all possible options.  Multiple short tests are preferred over one large test. If new development on the internal JobHandler parallel system is performed, a cluster test must be added setting, in  XML block, the node <internalParallel> to True. n/a
[ ] 6. If the change modifies or adds a requirement or a requirement based test case, the Change Control Board's Chair or designee also needs to approve the change.  The requirements and the requirements test shall be in sync. n/a
[ ] 7. The merge request must reference an issue.  If the issue is closed, the issue close checklist shall be done. #135
[ ] 8. If an analytic test is changed/added is the the analytic documentation updated/added? n/a

Checklist passed.
Merging.


export does not take 'groupChar' into account

frictionless export does not take the groupChar property of a table schema into account. This applies to both CSV and JSON export.
In my example the raw value is 8.699,8. The field in the table schema is described like this:
{
   "name": "Ansatz 2021 T€",
   "type": "number",
   "decimalChar": ",",
   "groupChar":"."
}

While the decimalChar specification is taken into account, the groupChar specification is apparently ignored.
$ frictionless extract --limit-rows 13 --csv  https://opendata.zitsh.de/frictionless/Titelliste_2021.json   | tail -n 1
1,101,41101,Entschädigung der Abgeordneten sowie Übergangsgelder an ausgeschiedene Abgeordnete,8.504.4,8.500.6,8.699.8

Framework version: 5.7.1

Hi @jze,
Currently, extract works like a normalization command so when you provide any dialect or field options it's intended to be used to read the data, not to write.
It's a known problem and we're working on separating two commands:

extract (explore the data in the console)
convert (that will support data conversion including this json -> csv case)

My initial analysis was wrong - it's anyway a bug, I'll release a fix soon

FIXED in #1459


Output shows has_dead_links=True on missing links

I have a setting in the confy.py file
needs_extra_links = [
   {
      "option": "links",
      "incoming": "links incoming",
      "outgoing": "links outgoing",
      "copy": False,
      "allow_dead_links": True,
      "style": "#ffcc00",
      "style_part": "dotted,#00AA00",
   }
]

According to this document, adding the above should allow dead links.
However, I still see the warning in the logs. Additionally, I see has_dead_links: True in the output.
Her is a sample rst file
.. swrq:: Ttile
    :id: SWRQ_PACKAGE_1
    :integrity: QM
    :links: SWRQ_PR_28, ARCH_PACKAGE_2

Out of the links mentioned, SWRQ_PR_28 is a dead link.
In the output, I see

| Software Requirement: **Ttile** [SWRQ_PACKAGE_1](#SWRQ_PACKAGE_1)
   |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| integrity: QM
has_dead_links: True

links outgoing: SWRQ_PR_28, [ARCH_PACKAGE_2](../../arch/arch_package_2.md#ARCH_PACKAGE_2)

                                          |
|                                                                                |

I hoped to not see has_dead_links in the table.

You will always get a log message about the dead link. The difference is the log-level, which is moved from Warning down to Info and therefore may not stop the build.
Is it really still a Warning in your log?
Regarding the has_dead_links output in the need itself, I'm afraid that you have to create your own layout to remove it.

@danwos Thanks for confirming this.

Is it really still a Warning in your log?

No it isnt.

In this case I close the issue, as Sphinx-Needs behaves as documented.
Feel free to reopen, if I missed something.


feat: add "fileResolve" option for deep import resolving

Good day!
I wanted to use the resolve option in order to resolve files from the compose: import. Unfortunately this option only gives me the possibility to resolve the "first layer" of composes.
Consider the following setup:
// a.css
.a {
  composes: b from "./b.css";
}

// b.css
.b {
  composes: c from "./c.css";
}

// c.css
.c {
  content: 'c';
}

In this setup the a.css file is my entry point. The resolve function will only be fired for the composes: b from "./b.css" statement. The "deeper" import inside b.css is completely opaque.
For this usecase I've implemented the fileResolve option in a non-breaking manner. This function will be called for all composes statements no matter how deep they are.

It receives two arguments file and importer, both of which are strings. The file is essentially the part between the brackets after the from keyword (same as the first argument of the resolve option). The importer is the file from which this compose statements comes from.
It has to return string | null or a Promise<string | null>. The returned string has to be an absolute path. If null is returned the default resultion takes place.

I haven't done that, but with this change I would propose to deprecate the current resolve option, because the new fileResolve
option is a bit more powerful, still straight forward to use and can still do the same thing as the resolve function.
The README would also need an update, but I would do that after I the feedback from this PR.
Fixes: #131

@KingSora thanks for the PR, I really appreciate your contribution. I have no time to implement features myself now, so this is a huge help for me.
I’ll review the PR in a few days.

@madyankin looking forward for the review! I've also created another PR which should fix sourcemaps #143

@madyankin just a little reminder :)

@KingSora thanks for pinging me. I have a todo in my Things, but now I'm relocating to another country, so a bit overwhelmed. Will have some time for the review next week

@madyankin please leave it open. I'll come back to it as soon as possible (next week possibly) I just need to finish an different project first

@KingSora don't worry — I have merged it and fixed the things I asked. Thank you for the implementation!
I'm going to release the new version after merging #143 — there are some failing tests. Could you take a look please?

@madyankin on it


Move -Werror to CI

As explained in #2360, you want -Werror in your CI to block yourself from introducing warnings in your current build setup, but you don't want to ship that as you don't want to prevent every customer on a more up-to-date system than you from being able to build your product.

Note: as you can see, this is catching more bugs than your old method; I am not interested in fixing those (especially since it looks like some might be in premake which I don't want to learn), so take this as a first draft, which you can build upon by adding the other fixes needed, and merge it once you're done :slightly_smiling_face:

Thanks! We'll merge this PR once we landed the other ongoing ones. PR #2364 should have fixed the additional warnings.


Review misc files from PR #75

add TODO to check security XSRF from review in #75
Partially closes #86

@captainsafia did I not address your concern by creating a getCookieByName function as you had requested? I'm a little confused as to what needs to be addressed here…

Catching up with this conversation.
I was referring to creating a getCookieByName function that did not use regex. The getCookie method used in the notebook code base is copied from the Tornado docs. While it suffices, I think an alternate approach (like splitting on semi-colons and parsing the key values) is easier to read. It's also the approach taken by the js-cookie package that we use rx-jupyter.

Opened #104 and closing this PR in preparation for release.


strace: 4.26 -> 5.0

Motivation for this change
https://lists.strace.io/pipermail/strace-devel/2019-March/008672.html
Things done

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

[x] NixOS
[ ] macOS
[x] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Assured whether relevant documentation is up to date
[ ] Fits CONTRIBUTING.md.

Tested on ls


Refactor imports and update ReorderableBuilder type in MultiImagePick…

Fixed and error you get saying:
Error: The argument type 'List' can't be assigned to the parameter type 'List'

with help of smocken78 fixed the IO preview and update version


Report should display exceeded slowness threshold for each test

Individual tests may set slowness thresholds independent of the configured test-suite threshold.
/**
 * This test's runtime would normally be under the suite's threshold, but
 * this annotation sets a lower threshold, causing it to be considered slow
 * and reported on in the test output.
 *
 * @slowThreshold 5
 */
public function testCanSetLowerSlowThreshold()
{
    $this->extendTime(10);
    $this->assertTrue(true);
}

But when these per-test slowness thresholds are exceeded, the report displays only the configured test-suite threshold is printed. This makes the report appear incorrect at first glance.
.SI.........                                                      12 / 12 (100%)

You should really fix these slow tests (>500ms)...
 1. 805ms to run JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testWithDataProvider with data set "Rock"
 2. 705ms to run JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testWithDataProvider with data set "Chalk"
 3. 601ms to run JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testWithDataProvider with data set "Jayhawk"
 4. 503ms to run JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testAnotherSlowTests
 5. 501ms to run JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testLongEndToEndTest
 6. 13ms to run JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testCanSetLowerSlowThreshold

In the above example, the default slowness threshold 500ms is set. But the last test runs in 13ms, which is not greater than the reported 500ms. This can be confusing.
Possible Solution 1
Remove the slowness thresholds from the report output. This removes the inaccuracy and the report simply contains a list of slow tests and their execution time. It remains easy to see which tests would benefit from investigating why they are slow.
Possible Solution 2
In addition to Solution 1, each slow test could output its slowness threshold along with execution time. For example:
.SI.........                                                      12 / 12 (100%)

You should really fix these slow tests...
 1. 805ms > 500ms running JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testWithDataProvider with data set "Rock"
 2. 705ms > 500ms running JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testWithDataProvider with data set "Chalk"
 3. 601ms > 500ms running JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testWithDataProvider with data set "Jayhawk"
 4. 503ms > 500ms running JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testAnotherSlowTests
 5. 501ms > 500ms running JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testLongEndToEndTest
 6. 13ms > 5ms running JohnKary\PHPUnit\Listener\Tests\SomeSlowTest:testCanSetLowerSlowThreshold

Any other ideas for improving the report output format?

I think solution 2 is pretty good. Easily readable without losing information 👍
Wouldn't hate solution 1 though


Unable to install bonobo git server 6.3

I have posted this question on stackoverflow.com  as well.
https://stackoverflow.com/questions/49272016/bonobo-got-server-6-3-starting-fails
I am trying to install a bonobo git server 6.3 on a Windows 2012 r2 machine. I have iis 8.5, installed .Net framework 4.6. I have anonymous auth enabled, iis users have full control on the folder, default app pool on the Bonobo.Git.Server, which is an application under default website, has .NET CLR version 4.0 and pipeline mode integrated, i haven't changed the advanced settings of the bonobo application in iis. Localhost is under trusted sites as well
When i browse this happens :

The log file also indicates the same. What am i doing wrong? Have i missed something?
The last line in the prerequisites is for Windows 10 and not for Windows server 2012,right?
I have followed all the steps in the installation guide.  But the exception hasn't gone away. Can someone help? The log just says : bonobo starting. And nothing else

This is after turning custom errors off.

I think you should try install .NET 4.6 again, as it looks like this problem:
https://stackoverflow.com/questions/31253747/method-not-found-0-system-array-empty-asapp-bundleconfig-registerbundl

I think you have not done the following : -

Thanks!


Validation performance

I was thinking about having a performant option for validating individual fields, this would imply that we have two forms of validation:

the classic function returning a full object.
the new one, an object with functions attached to it.

The new way could trigger onBlur and onChange, this would result in just that one fieldId being triggered for validation.

200 bytes freed up for new performance enhancements :D


More consolidation of REPL code

Add inlining support for whole modules and contracts
TODO can now say what feature is missing
Remove more unused bits of context

(Oops didn't mean to close.)


Upgrade istio to use autoscaling/v2beta2

Describe the solution you'd like
Istio should work out of the box with k3s, we do not support autoscaling/v2beta1 so need to upgrade to autoscaling/v2beta2
Additional context
rancher/k3s/issues/90
istio/istio/issues/12823

autoscaling/v2beta1 is now available in v0.4.0-rc1.


Error on react-router webpage while loading sandox

The following error is showing on react-router webpage while loading any sandbox.
TypeError
_interopRequireDefault is not a function
evaluate
/index.js:9
// If you experience any struggles with this sandbox, please raise an issue
on github. :)
import React from 'react';
import ReactDOM from 'react-dom';
import App from './example';
View compiled

Appears to be working now.


Feature Request: Get-PowerShell and Update-PowerShell to update PoSh version right from CLI

Summary of the new feature/enhancement
To bring Get-PowerShell and Update-PowerShell cmdlet that will be capable of downloading and upgrading existing version of PowerShell to the newest. For example: Upgrade from PowerShell 7 to PowerShell 7.1
Proposed technical implementation details (optional)
Cmdlets itself will check for the updates available online (or local repository) and give back an output like:
NewPSVersion 7.0.1
PSVersion 7.0.0

And some parameters -silent and -whatif or -filetype will do a trick.

In effect you have this already. The PowerShell team have created a simple script you can download like this (doing it the long way!)
# Download (once) this script
URI = "https://aka.ms/install-powershell.ps1"
Invoke-RestMethod -Uri $URI  |   Out-File -FilePath C:\Foo\Install-PowerShell.ps1
# Then run it
$EXTHT = @{
  UseMSI                 = $true
  Quiet                  = $true
  AddExplorerContextMenu = $true
  EnablePSRemoting       = $true
}
C:\Foo\Install-PowerShell.ps1 @EXTHT

Just run the script.
You could even add this to your PowerShell 7 $Profile:
C:\Foo\Install-PowerShell.ps1 @EXTHT &

That kicks off the install script as a batch job. The script takes only 30-40 seconds, so as long as you are in PowerShell 7, any updates get loaded in the background. Next time you start PowerShell it's upgraded.

It's still a crutch but a good solution!

IMHO what would be nice is a simple, and built-in way to test for the update. PowerShell currently prints out a warning message at startup that says there is a new version. If there were a command to, in effect, recreate the test. SO something like Test-PSVersion that did the same test and returns true if there IS no newer version and false if there IS a newer version. You could get fancy and have the command determine if the build is preview or daily and do similar (test whether there is a newer daily build or whether there is a newer preview build

This is makes sense. I think having at least something for "to do with PoSh updates" will become useful

I think the current warning that Powershell shows at startup when a new version is available is somewhat misleading. It gives you two options: go to this URL, or .... do a command? What command?
IMO there's a gap in the user story here. The warning would be more helpful if looked for like the following (loose paraphrase):
A new version of Powershell, v7.x, has been released.
Would you like update now? [Y/N/D]
[Y]es, update now (you will be informed upon completion)
[N]o, not now, but remind me next time I open Powershell
[D]on't bother me until the next version comes out.

out of curiosity, how did you get that prompt? When I run PowerShell 7.0.0, I just get a warning, like this:

out of curiosity, how did you get that prompt? When I run PowerShell 7.0.0, I just get a warning, like this:

That’s the prompt I was paraphrasing. Upgrade now OR go to this site?
The implication here is that there’s some way to upgrade without going to the site; at least that’s what it looks like to me. If there’s not some way to “upgrade now” without going to the site, then the prompt should say, “Upgrade now by going to this site”

Ahh,I see.
Well, when i see that message, I just run the Install-Powershell.ps1 file to install the upgrade.

Update is an approved verb.  It would be very nice to have a built-in Update-PowerShell command.  It should support -WhatIf.  It should be smart about telling folks what pwsh processes are running on Windows that would necessitate a reboot after install.  It should allow the user the opportunity to close those processes and then proceed.  I would expect that the script suggests exiting the current shell once the installer has started.  It could also take parameters that the installer could use (like enable remoting, add to path, etc).  It could also take a -Silent parameter to do a silent install - in which case perhaps the session should end (on Windows at least) to prevent a reboot being required.

Update is an approved verb. It would be very nice to have a built-in Update-PowerShell command.

I forgot about Update verb. I have changed the title according to information you provided.

Update-PowerShell gets my vote. If so - then the command could update the fully installed version, but also be able to update build of the day and preview.

The issue's description was updated to the current conclusion.

I think an Update-PowerShell cmdlet could be made that detects how that running instance was installed and use that same method to update: apt, yum, winget, brew, MS store, etc... in the case it cannot tell, it would just provide a link to the install PowerShell doc.  One potential problem on Windows is due to open file handles, if this cmdlet starts the MSI installer, you would have to close pwsh to update pwsh, but I think because the MSI process is a child process of pwsh, if you close pwsh, it will kill the MSI installer as well.

Yes please!
And if you use the MSI, you CAN kill the PowerShell console - and the MSI will continue to work just fine. I use this method all the time to update major versions. I just run Install-PowerShell.ps1 (from Gitub), specify -USEMSI. Then once the MSI has started, I just kill the PowerShell task and click through the installation.

updated #11222 with a suggestion for a solution

@doctordns, even without -UseMsi a solution is possible on Windows, although the user experience won't be as smooth as on Unix-like platforms (where updating in-place works, even run from the version being replaced):

Let Update-PowerShell reinvoke itself asynchronously, in a new window, via Start-Process powershell.exe
exit the original PS Core session so that no files to be updated are locked.
If updating succeeds in the powershell.exe session, asynchronously launch the updated pwsh and exit.

@doctordns, even without -UseMsi a solution is possible on Windows, although the user experience won't be as smooth as on Unix-like platforms (where updating in-place works, even run from the version being replaced):

Let Update-PowerShell reinvoke itself asynchronously, in a new window, via Start-Process powershell.exe
exit the original PS Core session so that no files to be updated are locked.
If updating succeeds in the powershell.exe session, asynchronously launch the updated pwsh and exit.

That could work.

@doctordns

In effect you have this already. The PowerShell team have created a simple script you can download like this (doing it the long way!)
# Download (once) this script
URI = "https://aka.ms/install-powershell.ps1"
Invoke-RestMethod -Uri $URI  |   Out-File -FilePath C:\Foo\Install-PowerShell.ps1
# Then run it
$EXTHT = @{
  UseMSI                 = $true
  Quiet                  = $true
  AddExplorerContextMenu = $true
  EnablePSRemoting       = $true
}
C:\Foo\Install-PowerShell.ps1 @EXTHT

Just run the script.
That kicks off the install script as a batch job. The script takes only 30-40 seconds, so as long as you are in PowerShell 7, any updates get loaded in the background. Next time you start PowerShell it's upgraded.

I think there a small typo, must be $URI = .
Also, after successfully running this script from PS 7.1.1 (7.1.2 available and while script was working, I saw that the 7.1.2 was downloaded), I still have 7.1.1 installed...

I have long used that install script to update my workstation and VMs. I also use it to install the latest preview edition and the latest daily build.  And for me, this is a work around.
That said, an Update-PowerShell command has long been requested and is likely to keep on being requested. Despite the many ways you can update PowerShell, the request for this feature remains constant. AND, VS Code manages to do it, so I guess the question is why not the console too?

@doctordns
It worked for me from pure PS with admins rights. Previously attempt was from Windows Terminal PS without admin rights...

Where is the new powershell located after running the command winget upgrade pwsh ?


feat(structure): add structure & initial logic

This commit adds the structure and initial logic for various
kubernetes controllers. Some of the controllers that have been
partially implemented are:

HTTP
DirectorHTTP
BlockDeviceSet

A HTTP custom resource invokes a http url and stores the http
response against the status field of the same resource.
A DirectorHTTP custom resource creates multiple HTTP resources
catering to all the registered Director APIs.
A BlockDeviceSet creates one or more NDM based BlockDevices.
Signed-off-by: AmitKumarDas<EMAIL_ADDRESS>

:tada: This PR is included in version 1.0.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


updateSupergroup[FullInfo] after updateNewChat only?

updateSupergroup[FullInfo] is guaranteed to come only after the coresponding updateNewChat?
In other words, when receiving updateSupergroup[FullInfo] can I be confident that I received updateNewChat before?

In other words, when receiving updateSupergroup[FullInfo] can I be confident that I received updateNewChat before?

Yes, updateNewChat is always the first update about the chat.

updateSupergroupFullInfo is an update about a supergroup, so it comes after updateSupergroup. But it is completely independent with updateNewChat.

How to get chat_id from Supergroup? Adding prefix -100 doesn't seem to be a durable way (didn't see that guarantee in docs).

@wowka1319 You need to use the method createSupergroupChat for this.


Fixed the bug of higlighting WI item from the list

Clicking extreme edge of a work item list was selecting the item
but not actually opening it.
fixes #422

Current coverage is 69.81% (diff: 100%)

Merging #428 into master will not change coverage

@@             master       #428   diff @@
==========================================
  Files            27         27
  Lines          1100       1100
  Methods         236        236
  Messages          0          0
  Branches        231        231
==========================================
  Hits            768        768
  Misses          332        332
  Partials          0          0

Powered by Codecov. Last update e9d9cf6...6c4e133

I think this runs the same issue as https://github.com/almighty/almighty-ui/pull/423
The right side work item list entry menu stops working, as the click on the parent takes over.

@aslakknutsen Yes I just realized. Let me fix that. Thanks.

@nimishamukherjee I tried that, in that case you'll lose out the area around that three dots button. This seemed like a more elegant solution to be. But yeah, you could be right, let's discuss.

@nimishamukherjee @sanbornsen I had thought to ask @SMahil to look into adjusting the padding and seeing that would work. It feels like it might be harder but a better solution.

@sanbornsen what does adding ng2-dropdown do to solve this issue? Something like that should at least be explained in the description at the top of the PR.

@joshua anyway at some point we had to do this for better control over the dropdown directive.

@sanbornsen if it doesn't solve the issue then it doesn't belong here. You can make a new issue and do it there. It only confused the solution.

@joshuawilson it does solve the issue in a better way.


Can the fluid world protected by a arc mutex be shared between threads?

I'm testing nphysics, salva and legion (entity component system) together. I need all the physics data to be a legion resource (and that it means that it will be shared between threads). The problem is with the LiquidWorld that is non Send, so I can not included inside the physics bundle resource. If I wrap everything with a Arc<Mutex<>> like the following code:
pub struct PhysicsResourceInner {
    pub mechanical_world: DefaultMechanicalWorld<Real>,
    pub geometrical_world: DefaultGeometricalWorld<Real>,
    pub bodies: DefaultBodySet<Real>,
    pub colliders: DefaultColliderSet<Real>,
    pub joint_constraints: DefaultJointConstraintSet<Real>,
    pub force_generators: DefaultForceGeneratorSet<Real>,

    // Fluid
    pub fluid_world: LiquidWorld::<Real>,
    pub fluid_couplings: ColliderCouplingSet::<Real, DefaultBodyHandle>,
}

#[derive(Clone)]
pub struct PhysicsResource {
    pub inner: Arc<Mutex<PhysicsResourceInner>>,
}

Then I can mark it as Send using an "unsafe" impl (like the above). Is this really safe or there is some hidden problems that will arise?
unsafe impl Send for PhysicsResource {}
EDIT: Not even the unsafe impl makes it compile. The important part of the error messages goes like:
error[E0277]: `(dyn salva2d::solver::pressure::pressure_solver::PressureSolver<f32> + 'static)` cannot be sent between threads safely
   --> src/app/mod.rs:106:73
    |
106 |                     if let Some(physics_resource) = &mut self.resources.get_mut::<PhysicsResource>() {
    |                                                                         ^^^^^^^ `(dyn salva2d::solver::pressure::pressure_solver::PressureSolver<f32> + 'static)` cannot be sent between threads safely
    |
    = help: the trait `std::marker::Send` is not implemented for `(dyn salva2d::solver::pressure::pressure_solver::PressureSolver<f32> + 'static)`
    = note: required because of the requirements on the impl of `std::marker::Send` for `std::ptr::Unique<(dyn salva2d::solver::pressure::pressure_solver::PressureSolver<f32> + 'static)>`
    = note: required because it appears within the type `std::boxed::Box<(dyn salva2d::solver::pressure::pressure_solver::PressureSolver<f32> + 'static)>`
    = note: required because it appears within the type `salva2d::liquid_world::LiquidWorld<f32>`
    = note: required because it appears within the type `resources::physics::PhysicsResourceInner`
    = note: required because of the requirements on the impl of `std::marker::Send` for `std::sync::Mutex<resources::physics::PhysicsResourceInner>`
    = note: required because of the requirements on the impl of `std::marker::Sync` for `std::sync::Arc<std::sync::Mutex<resources::physics::PhysicsResourceInner>>`
    = note: required because it appears within the type `resources::physics::PhysicsResource`
    = note: required because of the requirements on the impl of `legion_systems::resource::Resource` for `resources::physics::PhysicsResource`

Edit 2: If I change on the salva source "liquid_world.rs" (the two lines above), I can compile (without the unsafe impl). But I'm not sure if it ok or I'm missing something. Above the changes I made:
On the LiquidWorld struct definition add + Send to the solve:
solver: Box<dyn PressureSolver<N> + Send>,
And also add + Send to the new function:
solver: impl PressureSolver<N> + 'static + Send,

LiquidWorld is not Sync, so you should not share it between threads at all. Only one thread may own and interact with the LiquidWorld. Using unsafe to bypass this behavior is, well, unsafe.

Sharing between threads is done using the Send trait, not Sync. It's not Send either though.

Sharing between threads is done using the Send trait, not Sync. It's not Send either though.

Actually, sharing between threads is done by Sending a shared reference:

A type is Sync if it is safe to share between threads (T is Sync if and only if &T is Send).

If LiquidWorld was Send, you would be able to transfer it between threads, but not use it from multiple threads simultaneously.

True, not at the same time, but you could wrap it in an Arc<Mutex<LiquidWorld>> and use it sequentially from multiple threads.

True, not at the same time, but you could wrap it in an Arc<Mutex<LiquidWorld>> and use it sequentially from multiple threads.

That's true, because Arc is Send and Mutex is Sync, emulating the exact same behavior mentioned above.


Feature Request

Maybe you could add a utility that allows firing an event every second or something similar?

https://github.com/Demeng7215/PluginBase/blob/master/pluginbase-core/src/main/java/dev/demeng/pluginbase/TaskUtils.java#L103

Ah, thanks!


61 core support graal data structure

See issue 61 for details.

What is the status of this? Can it be merge or are there still todos?

There is still the question how to handle Graal parsing "predicate(X)" to "predicate\1(I0)" instead of preserving the variable name. This is not a bug, so my proposal was not to allow conversion of Graal Atoms in the first place, since I cannot imagine a use case for importing Atoms with non-recognizable variables.

Nevermind, the question is not relevant anymore. Graal recently changed their handling so that variable names are preserved. In that case this is done and can (as far as I can see) be merged.

I implemented the remaining unadressed review remarks on master branch. They can also be seen here, among "unresolved conversations". I have closed all conversations for which the remarks have been addressed.


Extended NavigationBar

NavigationBar should be able to dynamically change its size from the default size to a new Large size. There should already be native support for large titles in the UINavigationBar and the Android Toolbar (via the androidx material component lib). We will need to double check if the native behavior of transitioning between large/default size still works for Uno apps.
Example: the UINavigationBar transitions to the standard size as people begin scrolling content, and transitions back to the large mode when scrolled back to the top.

For Android: It may be worth investigating the Google.Android.Material androidx libraries for things like the CollapsingToolbarLayout
CollapsingToolbarLayout Example

@roubachof fyi, I can't seem to assign you the issue for some reason

@kazo0 I added @roubachof to the correct contributors' team so you are now able to assign him issues

I think implementing Android collapsing toolbar natively raises many questions and uncertainties...
It would be good to maintain the implementation risk level low (the famous "oh crap I spent 12 days on this and it kinda works but it kinda looks ugly").
So I think a good start would be to first implement it in uno with platform agnostic code.
Cause anyway only Android supports collapsible toolbar.
Then once we have this, we can try to implement it natively.
So after some thinking an easy way to implement it would be a CollapsibleToolbarLayout with 2 main properties

Name
Type
Description

Toolbar
ICollapsibleToolbar
the toolbar to be collapsed or expanded

Content
object
the body of page that will be wrapped in a ScrollViewer

interface ICollapsibleToolbar {
    string Title { get; }
    FontSize TitleFontSize { get; }
    Color BackgroundColor { get; }
    CollapsibleToolbarLayoutState CollapsibleState { get; set; }
}

For now, we have the NavigationBar in the toolkit, so we could just made it implement IToolbar.
Now we would like also to support collapsibles background images:

I propose the following properties:

Name
Type
Description

ExpandedHeight
double
the bar height when expanded

State
CollapsibleToolbarLayoutState
enum: Collapsed, InBetween, Expanded

ExpandedTitleMargin
Thickness
the title margins when expanded

ExpandedTitleFontSize
double
the title font size when expanded

ExpandedImage
sting
the image path displayed on the background when expanded

The pseudo-xaml implementation would look like this:
<Grid>
    <ScrollViewer>
        <ExpandedToolbarContent>
        <Content>
    </ScrollViewer>

    <Toolbar>
</Grid>

Basically the 'ExpandedToolbarContent' would contain the expanded UI, the title with expanded title font size and the background image.
And we used it like this:
<CollapsibleToolbarLayout ExpandedHeight="160"
                          State="Expanded"
                          ExpandedTitleFontSize="26"
                          ExpandedImage="MontrealSnowTornado.png">
    <CollapsibleToolbarLayout.Toolbar>
        <NavigationBar/>
    </CollapsibleToolbarLayout.Toolbar>

</CollapsibleToolbarLayout>

Use case: from expanded to collapsed
We are in expanded state: the ExpandedToolbarContent is displaying a montreal image in the background and a title with a font size of 26, height is 160dp.
In this state the Toolbar background is transparent, and the title is hidden, its CollapsibleState = "Expanded".
Our CollapsibleToolbarLayout state = "Expanded".

Scroll up is detected. Our CollapsibleToolbarLayout and our Toolbar states = "InBetween".
Thanks to interpolation based on the bottom of the ExpandedToolbarContent respectively to the Y scroll axis we are slowly fading background from image to our toolbar background. And scaling title font size to Toolbar font size.
When the bottom of the ExpandedToolbarContent reaches the bottom of the Toolbar, we set our CollapsibleToolbarLayout state to "Collapsed". We also set Toolbar states = "Collapsed". It does make visible the Toolbar background and title.

This way we can mimic with little effort a collapsible bar.

@kazo0, what do you think? I just did for ScrollViewer, but should be easier to port to collections and other scroll controls like
https://github.com/unoplatform/uno.toolkit.ui/assets/20712372/edb7aa0e-2ee6-4e72-b80d-e10bfb2e314d
All the magic happens here:
private void MainPage_ViewChanged(object? sender, ScrollViewerViewChangedEventArgs e)
{
	// scroll.ScrollableHeight is 100% of scroll distance
	// scroll.VerticalOffset is how much it was scrolled
	System.Diagnostics.Debug.WriteLine($"Scroll.Y = {scroll.VerticalOffset}");

	var percentageScrolled = CalculatePercentage(scroll.VerticalOffset, scroll.ScrollableHeight);

	var ratio = CalculateAbsoluteValue(percentageScrolled, 300);

	var diff = this.header.ActualHeight - ratio;

	this.header.Height = Math.Max(diff,this.header.MinHeight);
}


(__kindof UICollectionViewCell *)cellForItemAtIndex:(NSInteger)index Not come

General information

IGListKit version: 4.0
iOS version(s): 14.2
CocoaPods/Carthage version: 1.10.0
Xcode version: 12.2
Devices/Simulators affected: Both
Reproducible in the demo project? (Yes/No): Yes
Related issues: N/A

Debug information
# Please include debug logs using the following lldb command:
po [IGListDebugger dump]

When I Call [self.adapter reloadDataWithCompletion:nil] I just wanna every secionController can reload
but cellForItemAtIndex: not coming? How can I fix this?
Condition:

page with data list 1 count 4
reload the page then data change to 5 I called [self.adapter reloadDataWithCompletion:nil]
because cellForItemAtIndex: is not coming so the UI has many bug for not update

EveryOne know's how can I Fix this question?

All the data is from http request

All the data is from http request

But performUpdatesAnimated can fix this issue
Is this a bug for reloadDataWithCompletion?

But performUpdatesAnimated can fix this issue
Is this a bug for reloadDataWithCompletion?

me too

me too

how can fix this question?


Fix placeholder search

See https://github.com/meilisearch/meilisearch-php/issues/78.

Thanks for your review @emulienfou and @arkste! Merging then!


[v2] Cannot paste in terminal

code-server version: v2, preview 4
Host OS Version: Debian 10 Buster (running on ChromeOS via Crouton)
Client OS Version: ChromeOS 75

Description
Pasting does not work in terminal
Steps to Reproduce

Copy some text
Try to paste in terminal (Ctrl+Shift+V or right-click>Paste)
Cannot read property 'triggerDataEvent' of undefined

Fixed in preview 6 :)


DRS: Coordinate with DRS Team regarding required OPAQUE changes

As a curator, I would expect the DRS Ingest to be able to accommodate the updates to the OPAQUE and OPAQUE CONTAINER models.  To get this moving, we will have to coordinate with the DRS team (at a minimum Chris).
This story is to set up a meeting to discuss and make a plan for when it will be able to be completed in the DRS.

Hey team! Please add your planning poker estimate with ZenHub @jessjass @GPortas

Stories created from the discussion:
HDC#157
HDC#158
HDC#159


Video is not playing in Opera

Description
Video starts recording but after recording is finished error comes out:
The media could not be loaded, either because the server or network failed or because the format is not supported.
Steps to reproduce
Explain in detail the exact steps necessary to reproduce the issue.

Start recording
Finish recording
Try to play record

Results
Error, that format is not supported
Expected
To see recorded clip
Error output
VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.
versions
videojs
6.2.8
browsers
Opera 48.0.2685.50
OSes
Mac OS X

@uvytautas how does your player config look like?

@thijstriemstra
let player = videojs("myVideo", {
        controls: false,
        width: 160,
        height: 80,
        fluid: true,
        controlBar: {
            volumePanel: false,
            fullscreenToggle: false
        },

        plugins: {
            record: {
                audio: false,
                video: {facingMode: 'environment'},
                maxLength: 60,
                debug: true,
                timeSlice: 500
            }
        }
    });

I get same error at demo page : https://collab-project.github.io/videojs-record/examples/video-only.html

@uvytautas I've never tested against Opera, I thought it would be similar to Chrome nowadays. Can you reproduce this error in other browsers?

@thijstriemstra  Mozilla and Chrome works perfectly.

I've installed Opera using https://deb.opera.com/manual.html and will take a look.

@uvytautas tested https://collab-project.github.io/videojs-record/examples/video-only.html with Opera:
48.0.2685.50
Ubuntu 16.04.3 LTS (x86_64; Unity)

and that works fine.

@thijstriemstra That is strange, because I get this error (https://imgur.com/a/iFGRU) when recording is completed.
Even though I am using the same version 48.0.2685.50  but in Mac OS X 10.12.6

@uvytautas I will take a look and test on OSX Opera at some point. What error does the browser console display for you?

@thijstriemstra VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) The media could not be loaded, either because the server or network failed or because the format is not supported.

@uvytautas but there must be more console log messages than that. Can you make a screenshot of the full console log and attach it here?

Tested on OSX Opera and didn't get any errors but couldn't playback the video file. Fortunately I could reproduce the issue with https://www.webrtc-experiment.com/RecordRTC/ so it's not a bug in this plugin. I've opened a ticket for RecordRTC: https://github.com/muaz-khan/RecordRTC/issues/347

@muaz-khan provided the solution: https://github.com/muaz-khan/RecordRTC/issues/347#issuecomment-340236258
Can you try this setting @uvytautas:
videoMimeType: 'video/webm\;codecs=vp8' // or vp9


chore(deps): update terraform-module

This PR contains the following updates:

Package
Type
Update
Change

terraform-ibm-modules/event-notifications/ibm (source)
module
patch
1.14.7 -> 1.14.8

terraform-ibm-modules/kms-all-inclusive/ibm (source)
module
patch
4.16.10 -> 4.16.11

terraform-ibm-modules/scc-workload-protection-agent/ibm (source)
module
patch
1.3.16 -> 1.3.17

terraform-ibm-modules/scc/ibm (source)
module
patch
1.8.20 -> 1.8.21

Release Notes

terraform-ibm-modules/terraform-ibm-event-notifications (terraform-ibm-modules/event-notifications/ibm)
v1.14.8
Compare Source
Bug Fixes

deps: update terraform-module (#335) (c74ff33)

terraform-ibm-modules/terraform-ibm-kms-all-inclusive (terraform-ibm-modules/kms-all-inclusive/ibm)
v4.16.11
Compare Source
Bug Fixes

deps: update terraform terraform-ibm-modules/key-protect/ibm to v2.8.8 (#589) (0cc8088)

terraform-ibm-modules/terraform-ibm-scc-workload-protection-agent (terraform-ibm-modules/scc-workload-protection-agent/ibm)
v1.3.17
Compare Source
Bug Fixes

deps: update helm release sysdig-deploy to v1.68.1 (#212) (fdc95fd)

terraform-ibm-modules/terraform-ibm-scc (terraform-ibm-modules/scc/ibm)
v1.8.21
Compare Source
Bug Fixes

deps: update terraform-module (#193) (ca672ff)

Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.

[ ] If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

/run pipeline

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

GitHub release
v1.22.4

Your semantic-release bot :package::rocket:


Target the same element with multiple jQuery Selectors

Challenge Target the same element with multiple jQuery Selectors has an issue.
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36.
Please describe how to reproduce this issue, and include links to screenshots if possible.
My code:

jQuery Playground

#left-well

        <button class="shake animated btn-primary" id="target1">#target1</button>
        <button class="btn btn-default target" id="target2">#target2</button>
        <button class="btn btn-default target" id="target3">#target3</button>

#right-well

        <button class="btn btn-default target" id="target4">#target4</button>
        <button class="btn btn-default target" id="target5">#target5</button>
        <button class="btn btn-default target" id="target6">#target6</button>

@mubasherkhattak thanks for the issue but if you get stuck or have questions with a challenge in the future, please first ask questions to the Help Room. Hint: take a look at the casing of your methods. Is it .addclass() or is it .addClass(). Happy coding!

This is case sensitive, so .addclass() and .addClass() are not the same. Only one of them is proper.
Working through lessons and took me 10 minutes earlier to realize I had .addCLass() instead of just .addClass() -- attention to detail is so important.


Toggle /ping to artificially return unhealthy responses on SIGTERM during requestAcceptGraceTimout interval

What does this PR do?
Enhance /ping handler to return non-200 response upon requestAcceptGraceTimeout initiation, iff it is set.
Motivation
Fix https://github.com/containous/traefik/issues/2969

During #2003, we discussed if the new behavior should be toggleable by a switch. Back then, we decided it wasn't necessary. Reflecting on that, however, I think we need to have it.
Many orchestrators (including Marathon and Kubernetes) allow to configure dedicated backend endpoints to indicate aliveness ("is the backend still up and running?") and readiness ("is the backend ready to serve requests?"). Failure on the former usually means that a backend gets killed, while failure on the latter means it gets removed from rotation. With Traefik exposing a single endpoint only to signal both aliveness and readiness, such orchestrators cannot distinguish between the two properties anymore. The consequence is that if /ping returned 503 during the shutdown, an orchestrator using that endpoint as aliveness indicator might kill Traefik before it's able to shutdown gracefully. That would mess up with the gracefulness of the shutdown and potentially cause request loss.
I believe we should reconsider a switch (like my PR did) so that users running Traefik within an orchestrator can leave the switch off (the default behavior to maintain backwards compatibility) and rely on the orchestrator's built-in shutdown procedure, while those users running Traefik dedicatedly (such as the PR author) can enable the switch.
The alternative is have a dedicated endpoint (like /ready) which always expresses the desirable behavior (503 on SIGTERM). Again, in #2003 we decided against that because we did not want to expand on the number of endpoints. We may still need that extra endpoint at some point in the future though, should our readiness check ever desire to encompass more than a simple ping (e.g., only return 200 if at least a single valid configuration has been rendered). Internally at my organization we have been thinking about that feature and would have benefited from it already as a single configuration mistake can leave Traefik unusable (or unready) while still running. That said, my proposal to stick to a single endpoint but add a toggle would allow us to expand into that feature (by allowing to configure a custom endpoint).
@ravilr @emilevauge @Juliens WDYT?

@timoreimann I respectfully disagree. We are also running traefik as a ingress controller in Kubernetes.
All the external traffic is ingressed to the cluster pods through external VIP/Loadbalancer->traefik pods on hostNetwork->application pods.  In this mode, the Service readiness check on traefik pod is a no-op/immaterial. because, the traefik Kubernetes Service is not even used.
I think, for setups, which are dependent on Kuberbetes traefik Service, they don't even need the feature in this PR. the traefik requestAcceptGraceTimeout is only useful for setups involving external LB. As such, if setups dependent on internal Kubernetes Service, they need not set requestAcceptGraceTimeout (or leave the default value '0'), then they don't get this behavior of /ping returning 503 on shutdown.
Also, note that in K8s, SIGTERM is sent to a pod only during shutdown sequence, on which the Endpoint Controller removes the pod from Kubernetes Service rotation.  So, your point about liveness probe failing isn't valid, because the pod is already under shutdown mode ( pod's deletionTimeStamp is already set, so liveness probe isn't even kicked of by Kubelet).

@ravilr

Also, note that in K8s, SIGTERM is sent to a pod only during shutdown sequence, on which the Endpoint Controller removes the pod from Kubernetes Service rotation. So, your point about liveness probe failing isn't valid, because the pod is already under shutdown mode ( pod's deletionTimeStamp is already set, so liveness probe isn't even kicked of by Kubelet).

Thanks, I wasn't aware of that. It kills my entire chain or arguments. :-)
At least for Kubernetes. I haven't had time to test it for Marathon and wouldn't know for sure for other orchestrators. The behavior that Kubernetes expresses seems to be the reasonable one though.
Therefore, I'm all good with the PR as it is!

@marco-jantke Updated the ping.md documentation. Please review.

@ldez this pr is against 1.5 branch. should i open a pr against master branch also?  Please let me know.

@ravilr could you rebase on master.

@ldez @marco-jantke i screwed up my branch upon rebasing to master. Can we please abandon this pr and move to https://github.com/containous/traefik/pull/3062


Make command based variables available to task.json

Since we plan to consolidate launch.json and tasks.json, we'll have to make sure that variables types are not specific to debug or tasks.

Dup of #8754


fails to run (mriqc) singularity container through docker

initially reported by @dnkennedy and then troubleshooted locally on Linux REPRONIM_USE_DOCKER=1 of our example in README.md

full dump from terminal
$> REPRONIM_USE_DOCKER=1 ./containers-test.sh
> mktemp -d /home/yoh/.tmp/repro-XXXXXXX
> cd /home/yoh/.tmp/repro-6XkWWkE
> datalad create -d ds000003-qc -c text2git
[INFO   ] Creating a new annex repo at /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc
[INFO   ] Scanning for unlocked files (this may take some time)
[INFO   ] Running procedure cfg_text2git
[INFO   ] == Command start (output follows) =====
[INFO   ] == Command exit (modification check follows) =====
create(ok):../ /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc (dataset)
> cd ds000003-qc
> datalad install -d . ///repronim/containers
[INFO   ] Scanning for unlocked files (this may take some time)
install(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers (dataset)
add(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers (file)
add(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/.gitmodules (file)
save(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc (dataset)
action summary:
  add (ok: 2)
  install (ok: 1)
  save (ok: 1)
> datalad run -m Downgrade/Freeze mriqc container version containers/scripts/freeze_versions bids-mriqc=0.15.1
[INFO   ] == Command start (output follows) =====
I: bids-mriqc -> 0.15.1
[INFO   ] == Command exit (modification check follows) =====
add(ok):../ /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers/.datalad/config (file)
save(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers (dataset)
add(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers (file)
save(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc (dataset)
action summary:
  add (ok: 2)
  save (ok: 2)
> datalad install -d . -s https://github.com/ReproNim/ds000003-demo sourcedata
[INFO   ] Scanning for unlocked files (this may take some time)
[INFO   ] Remote origin not usable by git-annex; setting annex-ignore
[INFO   ] access to 1 dataset sibling s3-PRIVATE not auto-enabled, enable with:
| 		datalad siblings -d "/home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata" enable -s s3-PRIVATE
install(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata (dataset)
add(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata (file)
add(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/.gitmodules (file)
save(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc (dataset)
action summary:
  add (ok: 2)
  install (ok: 1)
  save (ok: 1)
> datalad containers-run -n containers/bids-mriqc --input sourcedata --output . {inputs} {outputs} participant group
[INFO   ] Making sure inputs are available (this may take some time)
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata/sub-02/anat/sub-02_T1w.nii.gz (file) [from s3-PUBLIC...]
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata/sub-02/anat/sub-02_inplaneT2.nii.gz (file) [from s3-PUBLIC...]
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata/sub-02/func/sub-02_task-rhymejudgment_bold.nii.gz (file) [from s3-PUBLIC...]
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata/sub-13/anat/sub-13_T1w.nii.gz (file) [from s3-PUBLIC...]
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata/sub-13/anat/sub-13_inplaneT2.nii.gz (file) [from s3-PUBLIC...]
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/sourcedata/sub-13/func/sub-13_task-rhymejudgment_bold.nii.gz (file) [from s3-PUBLIC...]
get(ok): /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers/images/bids/bids-mriqc--0.15.1.sing (file) [from origin...]
[INFO   ] == Command start (output follows) =====
FATAL:   container creation failed: mount /proc/self/fd/5->/usr/local/singularity/var/singularity/mnt/session/rootfs error: can't mount image /proc/self/fd/5: failed to mount squashfs filesystem: invalid argument
[INFO   ] == Command exit (modification check follows) =====
[INFO   ] The command had a non-zero exit code. If this is expected, you can save the changes with 'datalad save -d . -r -F .git/COMMIT_EDITMSG'
CommandError: 'containers/scripts/singularity_cmd run containers/images/bids/bids-mriqc--0.15.1.sing 'sourcedata' '' participant group' failed with exitcode 255 under /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc
REPRONIM_USE_DOCKER=1 ./containers-test.sh  36.18s user 43.33s system 14% cpu 9:27.22 total

https://github.com/hpcng/singularity/issues/5408 suggests that we need freshier singularity since we have
$> docker run --privileged --rm -e UID=47521 -e GID=47522 -v /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc:/home/yoh/.tmp/repro-6XkWWkE/ds000003-qc -v /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers:/home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers -v /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers/binds/HOME:/home/yoh/.tmp/repro-6XkWWkE/ds000003-qc/containers/binds/HOME -w /home/yoh/.tmp/repro-6XkWWkE/ds000003-qc -v /etc/localtime --entrypoint singularity mjtravers/singularity-shim:latest --version
singularity version 3.3.0-1

damn -- I guess https://github.com/ReproNim/containers/pull/42 was intended to fix it all but was "forgotten".  will get back to it now.

#42 and followup commits + updated docker build of the repronim/containers should have addressed this issue


Enhance the CMake file for building with Android NDK r27.

Without setting this new policy when building with Android NDK r27, the following error will occur. This patch fixes the issue.
-- Android: Selected unified Clang toolchain
-- The CXX compiler identification is Clang 18.0.1
-- The C compiler identification is Clang 18.0.1
-- Configuring incomplete, errors occurred!
 older versions.

CMake Warning (dev) at D:/a/xmake-repo/xmake-repo/ndk/android-ndk-r27/build/cmake/flags.cmake:46 (if):
  Policy CMP0057 is not set: Support new IN_LIST if() operator.  Run "cmake
  --help-policy CMP0057" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  IN_LIST will be interpreted as an operator when the policy is set to NEW.
  Since the policy is not set the OLD behavior will be used.
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.30/Modules/Platform/Android-Clang.cmake:23 (include)
  C:/Program Files/CMake/share/cmake-3.30/Modules/Platform/Android-Clang-CXX.cmake:1 (include)
  C:/Program Files/CMake/share/cmake-3.30/Modules/CMakeCXXInformation.cmake:48 (include)
  CMakeLists.txt:24 (project)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at D:/a/xmake-repo/xmake-repo/ndk/android-ndk-r27/build/cmake/flags.cmake:46 (if):
  if given arguments:

    "hwaddress" "IN_LIST" "ANDROID_SANITIZE"

  Unknown arguments specified
Call Stack (most recent call first):
  C:/Program Files/CMake/share/cmake-3.30/Modules/Platform/Android-Clang.cmake:23 (include)
  C:/Program Files/CMake/share/cmake-3.30/Modules/Platform/Android-Clang-CXX.cmake:1 (include)
  C:/Program Files/CMake/share/cmake-3.30/Modules/CMakeCXXInformation.cmake:48 (include)
  CMakeLists.txt:24 (project)

We do not use IN_LIST operator anywhere in Luau CMake files, so this policy toggle is not required.
Please check you other CMake projects and fix your issue accordingly.
Going to close this if additional details are not provided.


git-autofixup: init as alias

Description of changes
A top-level attribute makes this program easier to find for nix repl junkies like me.
EDIT: and make it guessable by those who must specify attributes; NixOS and home-manager users.
cc maintainer @DamienCassou
Things done

Built on platform(s)

[x] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

👍🏼
I did something similar because I could never find dig.


⚠ Bofrost.at has degraded performance

In c378bd2, Bofrost.at (https://www.bofrost.at) experienced degraded performance:

HTTP code: 200
Response time: 1219 ms

Resolved: Bofrost.at performance has improved in a17bfe3.


Missing details in docs

Description
Add a lot more info to the context, texture and sampler docs. When starting with moderngl I basically had to read the source or look at examples to understand things fully.
This is also a great way for me to learn the details.

I thought about also adding more info to texture parameters since some of the can be somewhat a mystery unless you know the ropes.

If you think the texture docs are decent I can copy this around in the different texture classes.

Looks great!
Changes on texture docs are good too, you can add them to the other texture classes.

I think that was it for now. I'm sure there's more that can be improved. I'll try to prepare another batch of updates when I find things.

Thank you! I merge this now. It will be part of the release. :)

The docs improvements are available here: https://moderngl.readthedocs.io/en/latest/
I will make a release on Monday or earlier, depends on how I succeed with the glBlendEquation sketch.

Awesome.
I thought about adding GL_TEXTURE_BORDER_COLOR, GL_TEXTURE_WRAP_R, GL_TEXTURE_MIN_LOD and GL_TEXTURE_MAX_LOD to Sampler before release to make the feature 100% complete.
I can probably get that done right now, but if that's too close to release for your taste we can wait.


Error messages when using STA without BasicAuth

When running queries against STA without BasicAuth, I get error messages like this. Everything works as expected, but there is this console output:
import  stapy as sta
import datetime
import random
import sys

if len(sys.argv) > 1:
  api_URL = sys.argv[1]
  print("Using API URL: " + api_URL + "\n")
else:
  raise ValueError('No API URL passed to script!')

sta.set_sta_url(api_URL)

datastream_id = 169
phenomenonTime = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S,%fZ")
result = random.randrange(0, 20)

obs = sta.Post.observation(
  phenomenonTime,
  result,
  datastream_id = datastream_id
)

results, times = sta.Query(sta.Entity.Observation).entity_id(obs).select("result", "phenomenonTime").get_data_sets()
print('Observation queried from server:\n\tphenomenonTime: %s\n\tresult: %d' % (times, results))

Console output:
CRITICAL:root:The provided key (STA_USR) does not exist in the config file
CRITICAL:root:The provided key (STA_PWD) does not exist in the config file
CRITICAL:root:The provided key (STA_USR) does not exist in the config file
CRITICAL:root:The provided key (STA_PWD) does not exist in the config file
Observation queried from server:
        phenomenonTime: 2022-03-11T09:45:49.321Z
        result: 16

Setting credentials should be optional, as it is not required for every STA. Hence, I think this should not be displayed, when no BasicAuth credentials set using:
stapy.set_credentials({USR}, {PWD}).

Thanks for reporting again!
Will fix this in the next days, but as is stapy can be used anyway.


Demo: Serializable demo

Lightweight video demo by @awoods187.
Accompanying tutorial by @jseldess.
Reference: https://docs.google.com/document/d/172rVTpRZx_vpDCAVU4HSca3vG7dKYY4Yjl_vqEuDkXk/edit

Would be nice to also resolve:

https://github.com/cockroachdb/docs/issues/3734
https://github.com/cockroachdb/docs/issues/1249


First example of system not clear

The first example of a system is in the architecture overview relative to the spawn function.
The text says:
In the spawn function, take note of the second parameter: the IWorldDispatcher interface.
This provides a gateway to the world contract.
By integrating it into the function, it enables the get! and set! macros to interface directly with the world contract.

However the function looks like:
fn spawn(self: @ContractState) {
    // Access the world dispatcher for reading.
    let world = self.world_dispatcher.read();

    // get player address
    let player = get_caller_address();

    // dojo command - get player position
    let position = get!(world, player, (Position));

    // dojo command - set player position
    set!(world, (Position { player, vec: Vec2 { x: 10, y: 10 } }));
}

Is this related to the fact that without using [dojo::contract] the user has to explicitly pass the world dispatcher? Should we update the code example, or modify this text?

We don't have to pass the world dispatcher anymore. We have to update the text.


Fix localisation variant groups

Add localized resources are added to one variant group.
described in #69

Create variant groups of the base localization
Add references to localized resources into base localization variant groups

Thanks @ryohey, this is great!
Before I have a proper look at this, are you able to run swift test to generate the fixture project again and commit the changes (if there are any).
I actually just added a commit to master that fails the travis test if the generated fixture changes and wasn't committed, but it's after you created your branch

OK thanks!
By the way I want to write some tests for this changes.
How do you think I can do that properly? (Is FixtureTests.swift good for that?)

Yeah, FixtureTests would be a good place. You can make a new Fixture project, but I think it would just be easier to edit the current TestProject and localise the storyboard

@yonaskolb I fixed issues you reviewed and I ran swift test then commit the updated project, but CI was failure. What should I do?

Thats interesting. If you've really committed the current version of the generated project I'm not sure why it's generating a different on on travis.
One thing to make sure of is to not have the GeneratedProject open in Xcode, as Xcode will resave the project with some small formatting differences. If it's open close it and then run swift test again

@yonaskolb Thanks I resolved. I used full path to generate UUID. I changed it to remove basePath. Could you review it?

rebased onto master and resolve conflicts

@yonaskolb are there any problems?

Hi @ryohey, sorry I haven't had time to look at this in depth. I'll review it as soon as I have some time

I rebased this branch, but the code change is only 8596091, which fixed the problem pointed out in the review.

Nice one @ryohey! 🎉

I noticed this only seems to work if the default localization is in Base.lproj, not if you just have one in en.lproj. I'm not really sure if that's expected, or if it's worth solving for *.lproj, but it might be.

Actually looks like there might be another issue with this, I get this error on CI:
2017-10-17 14:19:02.197 xcodebuild[1357:7330] warning:  The file reference for "Base.lproj/Localizable.strings" is a member of multiple groups ("Localizable.strings" and "Localizable.strings"); this indicates a malformed project.  Only the membership in one of the groups will be preserved (but membership in targets will be unaffected).  If you want a reference to the same file in more than one group, please add another reference to the same path.```

@ryohey, are you able to take a look at this?

@keith If only one * .lproj other than Base.lproj is included in the project, It does not create a Variant Group but add a reference to the file directly, so I think it's not a problem.
However, if there are only en.lproj and ja.lproj, for example, they are added directly, so there is a problem.  It's necessary to disable Base Localization to fix the issue but the project currently output by XcodeGen is unconditionally enabled Base Internationalization by specifing Base in knownRegions.
https://github.com/yonaskolb/XcodeGen/blob/09209a4e2c2cae8d57f6e43627260e8e667cd211/Sources/XcodeGenKit/PBXProjGenerator.swift#L126
(I just noticed that it might necessary to add the name of * .proj to knownRegions now)
If there is no base.lproj, it seems correct to use PBXProject's developmentRegion as Base Language, but developmentRegion is fixed to English, It may be necessary to adding syntax so that it can be specified developmentRegion from spec.
https://github.com/yonaskolb/XcodeGen/blob/09209a4e2c2cae8d57f6e43627260e8e667cd211/Sources/XcodeGenKit/PBXProjGenerator.swift#L133
As for the CI warnings please let me know your project's spec because I could not reproduced.

Here's an example project with the warning. You need to build with the newest commit of XcodeGen for it to work at all. Run make to see the warning output in the console.
XcodeGenLocalizationWarnings.zip

@keith Thanks I got the warning.
fixed in https://github.com/yonaskolb/XcodeGen/pull/102

Awesome thanks so much!


Options in subcommands are not reset to their initial value

When a single CommandLine instance is reused multiple times, picocli is supposed to reset the values of all options and positional parameters to their initial value, and then to their default value (if a default value was defined in the annotations).
Scope
With picocli 4.2.0, subcommand options are not cleared between invocations. This impacts applications that reuse a CommandLine instance in multiple invocations. If an option was specified in the first invocation and omitted in the second invocation, it will incorrectly retain the value from the first invocation.
The problem does not manifest when a subcommand is invoked only once in a JVM process. Also, applications that do not reuse a CommandLine instance, and applications without subcommands, are not impacted.
The problem was introduced in version 4.2.0 and does not exist in picocli 4.1.4 and earlier.
Workaround
This regression does not apply to options that have a defaultValue defined in the annotation: options defined as @Option(... defaultValue="...") will correctly be reset to the default value in between multiple invocations. Use the defaultValue annotation where possible.
Cause
The cause is related to recent changes for lazy subcommand instantiation and repeatable subcommands.
private TypedMember(Field field, IScope scope) {
    this(field);
    if (ObjectScope.isProxyClass(scope)) {
        throw new InitializationException("Invalid picocli annotation on interface field");
    }
    FieldBinding binding = new FieldBinding(scope, field);
    getter = binding; setter = binding;
    this.scope = scope;
    hasInitialValue &= ObjectScope.hasInstance(scope); // <--- used to be obj != null
}

I may be possible to fix this by implementing this idea:
https://github.com/remkop/picocli/issues/961 (similar to https://github.com/remkop/picocli/issues/962)

Fixed in master.


[Bug Report] Vue Cli 3 and Element-UI 2.5.4 Vertical NavMenu Transition Problem

Element UI version
2.5.4
OS/Browsers version
MacOS 10.14.2 / Chrome 72.0.3626.81
Vue version
2.6.3
Reproduction Link
https://github.com/sinbino/element-ui-transition-issue
Steps to reproduce
Create a project with Vue Cli 3.
vue cli test-proj

Add vue-cli-plugin-element.
vue add element

Implement view using vertical collapsable navmenu.
(I prepared an example in github.)
It works with development build.
(/dist-dev folder in the repository.)
However, collapse transition animation does not work properly in production build.
(/dist folder in the repository.)
What is Expected?
The transition animation works correctly in both builds.
What is actually happening?
It works correctly in development build, but It does not work properly with production build.
It is similar to #14247, but it also occurs in Element-UI 2.5.4.

it works for me.


Statewise daily testing Number on API.

Please provide a statewide daily testing number (whichever state that gives) on API. At this stage, those are crucial data now for further data analysis.

It's already there: https://api.covid19india.org/state_test_data.json


Proper multipart HTML email.

Better HTML e-mails, sent as valid multipart MIME with a plaintext alternative and attached images. Also saves the plaintext summary to the results, which is useful when trying to read on the terminal.

Also fixes the problem with previously malformed e-mails coming from UPPMAX.

@ewels
Error occurred during test (see below). I guess the NGI-ChIPseq/assets/sendmail_template.txt should be renamed as  NGI-ChIPseq/assets/sendmail_template.html?
[main] ERROR nextflow.script.WorkflowMetadata - Failed to invoke `workflow.onComplete` event handler
java.io.FileNotFoundException: /home/chuanw/.nextflow/assets/ewels/NGI-ChIPseq/assets/sendmail_template.html (No such file or directory)

/Chuan

Ah sorry, this is what happens when I'm in a rush to leave and skip the local test :)
Fixed and pushed.

Tested and both worked!  /chuan