SDS feature request:  only fetch trusted CA from SDS for CertificateValidationContext

Title: only fetch trusted CA from SDS for CertificateValidationContext
Description:
Istio likes to use SDS to send trusted CA for CertificateValidationContext.  But its SDS server doesn't have info for other fields, such as verify_subject_alt_name.  The discovery server has the info for "verify_subject_alt_name".
Like to change SDS that:

Only trusted CA can be fetched from SDS,  the other fields of CertificateValidationContext can be specified in LDS/CDS from discovery server.
Keep the current SDS of fetching whole CertificateValidationContext from SDS server.

Proposed Config change PR is:  https://github.com/envoyproxy/envoy/pull/4730

Looking at CertificateValidationContext, is trusted_ca the only one you want to deliver from SDS? Perhaps crl should be delivered together? @PiotrSikora

cc @wattli

@PiotrSikora @lizan raised a good point that there are other fields in CertificateValidationContext needs to be fetched from SDS.   We don't want to add many oneof with sds_config for each field that potentially could be fetched from SDS.
Please look at my proposal (with is the current state of  #4730
It allows users to send any number of fields as they want.

CRL is not something Istio security support as of now, but we want the design to be as generic as possible since Istio is not the only customer of Envoy and going forward we might support CRL as well.
@PiotrSikora , please let us know if you have better suggestions and your thought on Wayne's proposal.

Hi @PiotrSikora , could you provide some feedbacks and let us know your concerns about #4730?

@wattli @JimmyCYJ @qiwzhang Per the discussion we had last week, trusted CA delivery for Istio can be implemented as either:

Trusted CA (and CRL) being delivered via SDS from NodeAgent and referred to in LDS/CDS from Pilot (i.e. this PR). This requires a new message containing trusted CA and CRL, and potentially some refactoring of the existing APIs, but is more of less what I suggested in https://github.com/envoyproxy/envoy/pull/4730#pullrequestreview-164865160. This solution has the benefit of trusted CA being transmitted and updated once, not O(services).
Trusted CA (and CRL) being delivered as part of LDS/CDS from Pilot. This doesn't require any changes to Envoy and works right now, but it requires changes in Citadel and Pilot in order to propagate and update trusted CA whenever it rotates. This solution was preferred by @lizan.

The second solution is cleaner from the API standpoint, but I could see the benefit of the verification material being distributed separately from the rules for it. Both solutions are fine, IMHO.
As for the solution suggested by in #4730, there is no precedence in Envoy APIs for the overrides, and I personally view it more as a hack than a properly designed solution for the issue at hand.
cc @ggreenway @mattklein123 @htuch FYI

I just remembered that CRLs can be provided (once #4825 is merged) as part of trusted CA (i.e. for a file-based data source, CA list and CRL list can be concatenated and loaded with trusted CA), so perhaps we can ignore the separate CRL field for the purpose of SDS? What do you think, @lizan?

Trusted CA (and CRL) being delivered as part of LDS/CDS from Pilot. This doesn't require any changes to Envoy and works right now, but it requires changes in Citadel and Pilot in order to propagate and update trusted CA whenever it rotates. This solution was preferred by @lizan.

I prefer this or the whole CertificateValidationContext from NodeAgent via SDS. (i.e. not breaking CertificateValidationContext). On the second thought, via SDS actually make more sense. It is more efficient when there are changes to secure naming mapping, delivering via SDS wouldn't draining connection from cluster/listener.
IIRC, having pilot delivering secure naming mapping is an interim solution when we didn't have SDS, and citadel is only issuing certificates to ConfigMap. Do we have am issue tracking this at Istio side?
cc @myidpt @ZackButcher

IIRC, having pilot delivering secure naming mapping is an interim solution when we didn't have SDS, and citadel is only issuing certificates to ConfigMap. Do we have am issue tracking this at Istio side?

@myidpt @wattli may have more context about this.

@lizan We don't have issue to track propagating secure naming info through SDS. While I think it's the right direction, I consider this not a short-term effort for Istio.

@PiotrSikora could we just use merge semantics and have both an SDS and LDS delivered CertificateValidationContext?

@htuch I like this idea.


How to export models to ONNX

Thank you for your work, the performance of this model is quite good. I would like to deploy and use it. Is there a way to export it to ONNX?

I've made onnx version of the denoiser here: https://github.com/skeskinen/resemble-denoise-onnx-inference It's deployed in https://smartmediacutter.com/ and works quite nicely.
This does not do the enhancer and I'm not sure how easy it is to do the enhancer model in onnx. The enhancer is too slow to run for my usecase at the moment.

Thank you so much for sharing it! It's really helpful and I appreciate your work.

My workaround leed me to these fixes for make it exportable into ONNX
Comment the Generator because it's not exportable by ONNX
resemble-enhance/enhancer/lcfm/cfm.py
def _sample_ψ0(self, x: Tensor):
    """
    Args:
        x: (b c t), which implies the shape of ψ0
    """
    shape = list(x.shape)
    shape[1] = self.output_dim
    # if self.training:
    #     g = None
    # else:
    #     g = torch.Generator(device=x.device)
    #     g.manual_seed(0)  # deterministic sampling during eval
    ψ0 = torch.randn(shape, device=x.device, dtype=x.dtype) # , generator=g)
    return ψ0

Change .expand function to .repeat.
resemble/enhancer/univnet/alias_free_torch/resample.py
def forward(self, x):
    _, C, _ = x.shape
    x = F.pad(x, (self.pad, self.pad), mode='replicate')
    weight = self.filter.repeat([int(x.shape[1]), 1, 1])
    x = self.ratio * F.conv_transpose1d(x, weight, stride=self.stride, groups=C) # self.filter.expand(C, -1, -1)
    shape = x.shape
    shape = [int(elem) for elem in shape]
    x = torch.reshape(x, shape)
    x = x[..., self.pad_left:-self.pad_right]

    return x

Write your own custom Tensor.unfold function
resemble_enhance/enhancer/univnet/lvcnet.py
    def location_variable_convolution(self, x, kernel, bias, dilation=1, hop_size=256):
        """perform location-variable convolution operation on the input sequence (x) using the local convolution kernl.
        Time: 414 μs ± 309 ns per loop (mean ± std. dev. of 7 runs, 1000 loops each), test on NVIDIA V100.
        Args:
            x (Tensor): the input sequence (batch, in_channels, in_length).
            kernel (Tensor): the local convolution kernel (batch, in_channel, out_channels, kernel_size, kernel_length)
            bias (Tensor): the bias for the local convolution (batch, out_channels, kernel_length)
            dilation (int): the dilation of convolution.
            hop_size (int): the hop_size of the conditioning sequence.
        Returns:
            (Tensor): the output sequence after performing local convolution. (batch, out_channels, in_length).
        """
        batch, _, in_length = x.shape
        batch, _, out_channels, kernel_size, kernel_length = kernel.shape

        assert in_length == (
            kernel_length * hop_size
        ), f"length of (x, kernel) is not matched, {in_length} != {kernel_length} * {hop_size}"

        padding = dilation * int((kernel_size - 1) / 2)
        x = F.pad(x, (padding, padding), "constant", 0)  # (batch, in_channels, in_length + 2*padding)
        x = custom_unfold_dim_2(x, hop_size + 2 * padding, hop_size)
        # x = x.unfold(2, hop_size + 2 * padding, hop_size)  # (batch, in_channels, kernel_length, hop_size + 2*padding)

        if hop_size < dilation:
            x = F.pad(x, (0, dilation), "constant", 0)
        x = custom_unfold_dim_3(x, dilation, dilation)
        # x = x.unfold(3, dilation, dilation)  # (batch, in_channels, kernel_length, (hop_size + 2*padding)/dilation, dilation)
        x = x[:, :, :, :, :hop_size]
        x = x.transpose(3, 4)  # (batch, in_channels, kernel_length, dilation, (hop_size + 2*padding)/dilation)
        x = custom_unfold_dim_4(x, kernel_size, 1)
        # x = x.unfold(4, kernel_size, 1)  # (batch, in_channels, kernel_length, dilation, _, kernel_size)

        o = torch.einsum("bildsk,biokl->bolsd", x, kernel)
        o = o.to(memory_format=torch.channels_last_3d)
        bias = bias.unsqueeze(-1).unsqueeze(-1).to(memory_format=torch.channels_last_3d)
        o = o + bias
        o = o.contiguous().view(batch, out_channels, -1)

        return o

def custom_unfold_dim_2(x: torch.Tensor, window_size: int, step: int):
    dim = 2
    subtensors = [x[:, :, i:i + window_size, ...] for i in range(0, x.size(dim) - window_size + 1, step)]
    result = torch.stack(subtensors, dim=dim)
    return result

def custom_unfold_dim_3(x: torch.Tensor, window_size: int, step: int):
    dim = 3
    subtensors = [x[:, :, :, i:i + window_size, ...] for i in range(0, x.size(dim) - window_size + 1, step)]
    result = torch.stack(subtensors, dim=dim)
    return result

def custom_unfold_dim_4(x: torch.Tensor, window_size: int, step: int):
    dim = 4
    subtensors = [x[:, :, :, :, i:i + window_size, ...] for i in range(0, x.size(dim) - window_size + 1, step)]
    result = torch.stack(subtensors, dim=dim)
    return result

Export script
P.S. I had to rename the resemble-enhance source folder to src to avoid problems with package resemble-enhance which is also was installed in my venv.
import logging
import time
import os

import click
import torch
import torchaudio
from torch.nn.functional import pad
from torchaudio.functional import resample

from src.enhancer.inference import load_enhancer
from src.hparams import HParams
from src.inference import merge_chunks, remove_weight_norm_recursively

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

@click.command()
@click.option('--wav-path', type=click.Path(exists=True), help='Path to input wav file')
@click.option('--save-path', type=str, default='output.wav', help='Path to save output wav file')
@click.option('--run-dir', type=str, default=None, help='Path to run directory')
@click.option('--device', type=str, default='cuda', help='Device to use for computation')
@click.option('--nfe', type=int, default=32, help='Number of function evaluations')
@click.option('--solver', type=str, default='midpoint', help='Numerical solver to use')
@click.option('--lambd', type=float, default=0.5, help='Denoise strength')
@click.option('--tau', type=float, default=0.5, help='CFM prior temperature')
@click.option('--chunk-seconds', type=float, default=30.0, help='Length of each chunk in seconds')
@click.option('--overlap-seconds', type=float, default=1.0, help='Overlap between chunks in seconds')
@click.option('--export-onnx', type=bool, default=False, help='Do you need to export enhancer model to ONNX?')
@click.option('--onnx-path', type=click.Path(exists=True), default="onnx", help='The path where ONNX files will be saved')
def main(
    wav_path: str,
    save_path: str = "output.wav",
    run_dir: str | None = None,
    device: str = "cuda",
    nfe: int = 32,
    solver: str = "midpoint",
    lambd: float = 0.5,
    tau: float = 0.5,
    chunk_seconds: float = 30.0,
    overlap_seconds: float = 1.0,
    export_onnx: bool = False,
    onnx_path: str = "onnx",
):
    if torch.cuda.is_available():
        torch.cuda.synchronize()
        if device == "cuda":
            torch.cuda.empty_cache()
    else:
        device = "cpu"

    enhancer = load_enhancer(run_dir, device)
    enhancer.configurate_(nfe=nfe, solver=solver, lambd=lambd, tau=tau)

    enhancer.eval()
    enhancer.lcfm.eval()
    remove_weight_norm_recursively(enhancer)
    hp: HParams = enhancer.hp
    enhancer.to(device)

    dwav, sr = torchaudio.load(wav_path)
    dwav = dwav.mean(dim=0)

    dwav = resample(
        dwav,
        orig_freq=sr,
        new_freq=hp.wav_rate,
        lowpass_filter_width=64,
        rolloff=0.9475937167399596,
        resampling_method="sinc_interp_kaiser",
        beta=14.769656459379492,
    )

    result_audio_length = dwav.shape[-1]

    start_time = time.perf_counter()

    chunk_length = int(sr * chunk_seconds)
    overlap_length = int(sr * overlap_seconds)
    hop_length = chunk_length - overlap_length

    chunks = [dwav[i:i + chunk_length] for i in range(0, dwav.shape[-1], hop_length)]
    input_chunks = torch.stack([pad(chunk, (0, chunk_length - len(chunk))) for chunk in chunks], dim=0)

    abs_max = input_chunks.abs().max(dim=1, keepdim=True).values
    abs_max[abs_max == 0] = 10e-7
    input_chunks = input_chunks / abs_max
    input_chunks = input_chunks.to(device)

    with torch.inference_mode() and torch.no_grad():
        output = enhancer(input_chunks).to("cpu")
        output = output * abs_max

    audio = merge_chunks(output, chunk_length, hop_length, sr=hp.wav_rate)

    elapsed_time = time.perf_counter() - start_time
    logger.info(f"Elapsed time: {elapsed_time:.3f} s, {audio.shape[-1] / elapsed_time / 1000:.3f} kHz")

    torchaudio.save(save_path, audio[None, :result_audio_length], hp.wav_rate)

    if export_onnx:
        logger.info("Exporting enhancer model to ONNX")
        with torch.no_grad():
            mel_spectrogram = enhancer.to_mel(input_chunks)
            normalizer_result = enhancer.normalizer(mel_spectrogram)
            lcfm_result = enhancer.lcfm(normalizer_result)

            logger.info("Exporting normalizer model to ONNX")
            torch.onnx.export(
                enhancer.normalizer,
                mel_spectrogram,
                os.path.join(onnx_path, "normalizer.onnx"),
                export_params=True,
                opset_version=17,
                do_constant_folding=True,
                input_names = ['input'],
                output_names = ['output'],
                dynamic_axes={'input' : {0 : 'batch_size', 2 : 'mel_length'},
                            'output' : {0 : 'batch_size', 2 : 'mel_length'}}
            )

            logger.info("Exporting lcfm model to ONNX")
            torch.onnx.export(
                enhancer.lcfm,
                normalizer_result,
                os.path.join(onnx_path, "lcfm.onnx"),
                export_params=True,
                opset_version=17,
                do_constant_folding=True,
                input_names = ['input'],
                output_names = ['output'],
                dynamic_axes={'input' : {0 : 'batch_size', 2 : 'mel_length'},
                            'output' : {0 : 'batch_size', 2 : 'mel_length'}}
            )

            logger.info("Exporting vocder model to ONNX")
            torch.onnx.export(
                enhancer.vocoder,
                lcfm_result,
                os.path.join(onnx_path, "vocder.onnx"),
                export_params=True,
                opset_version=17,
                do_constant_folding=True,
                input_names = ['input'],
                output_names = ['output'],
                dynamic_axes={'input' : {0 : 'batch_size', 2 : 'mel_length'},
                            'output' : {0 : 'batch_size', 1 : 'audio_length'}}
            )

if __name__ == "__main__":
    main()


[Feature] Avoid wrapping in subqueries where possible and respect order by clauses with dbt show --limit

Is this a new bug in dbt-core?

[X] I believe this is a new bug in dbt-core
[X] I have searched the existing issues, and I could not find an existing issue for this bug

Current Behavior
At the moment, the limit flag on dbt show is achieved by wrapping the main query in a subquery, so:
select *
    from (
        with summarised as (select * from analytics_dev.dbt_jlabes.messages)

        select
            len(text),
            *
        from summarised
        order by len(text) asc
    ) as model_limit_subq
    limit 500

instead of the more idiomatic
with summarised as (select * from analytics_dev.dbt_jlabes.messages)

select
    len(text),
    *
from summarised
order by len(text) asc
limit 500

Because of this, the output isn't always correctly sorted (screenshot from the Cloud IDE, but behaviour is consistent across Cloud IDE, Cloud CLI and Core CLI)

Expected Behavior
Sort order to be respected. The easiest way to do this would be to not wrap in a subquery and instead append the limit directly, as shown above.
I imagine that we're doing it this way to abstract over differences in syntax across adapters (lookin at you, SQL Server)
(Potentially we're also doing it to avoid dbt show --inline "select * from my_table limit 10" --limit 100 from rendering two limit clauses and causing an error. But IMO if you do that, you should get the error from the DWH and then remove one of your limits.)
Steps To Reproduce
Unfortunately it reproduces sporadically - I'd hoped to provide you a basic query like dbt_utils.generate_series and sort by that, but I think there's something to do with how each DWH distributes the results that makes this tricky to force into existence.
Relevant log output
No response
Environment
- dbt: 1.6.latest and 1.7.0

Which database adapter are you using with dbt?
snowflake
Additional Context
No response

Thanks for raising this @joellabes !
Agreed, it makes sense that we'd want to respect order by within the underlying query.
We'd also want to respect limit within the underlying query too though. If we make the proposed change as-is, I think we'd be at risk of breaking preview queries that are working currently. So I'm going to re-categorize this as a feature request.
Workaround
The standard definition is:
{% macro default__get_limit_subquery_sql(sql, limit) %}
    select *
    from (
        {{ sql }}
    ) as model_limit_subq
    limit {{ limit }}
{% endmacro %}

You can get the behavior you're after by creating a file within your project named something like macros/overrides/get_limit_subquery_sql.sql:
{% macro default__get_limit_subquery_sql(sql, limit) %}
    {{ sql }}
    limit {{ limit }}
{% endmacro %}

ooooh i like that workaround. on my way to propose a PR in internal-analytics 👀

OK got it! I guess my pitch is that previews don't have to be protected from that happening - if you accidentally wind up issuing select 1 as id limit 3 limit 100, you solve it by going "oops!" and removing the --limit flag (or the limit statement from your actual query, as appropriate)

Hi @dbeatty10 splitting hairs here :-) I don't know if I would say this is a feature request or a bug fixing. Yes, I hear you that some queries currently working would stop working (the double limit queries); however, I could also frame it as there are queries that used to work as expected before that are now not throwing errors but returning incorrect results compared to previous versions (e.g. if you downgrade the environment to 1.6 they would work as expected) so I would consider this more of a regression bug that a new feature 😅
Appreciate the workarounds. Also there's another (at least for Snowflake reported by Jack Nguyen https://getdbt.slack.com/archives/CBSQTAPLG/p1698024014827109?thread_ts=1698004749.652379&cid=CBSQTAPLG )
using a explicit limit inside the query instead of relying on dbt's wrap.

Very good points @dsmdavid -- we could reasonably categorize it as any of those.
We've taken a couple swings at this:

initially using the PEP249 / DB API 2.0 python driver methods in https://github.com/dbt-labs/dbt-core/pull/7545
then switching to adding a SQL LIMIT clause in https://github.com/dbt-labs/dbt-core/pull/8641

The latter has interactions with ORDER BY clauses that is the subject of this issue.
Ideal
In the most ideal scenario, we'd just do the following:
Add a limit if none exists in the SQL. If a limit already exists in the SQL, and it is less than the provided CLI/Cloud limit, then there's nothing to do. Otherwise, replace the preexisting SQL limit with the CLI/Cloud limit.
The devil would be in the implementation details due to the query re-writing, so this could be a large lift. We'd probably opt for a more practical option that is more easy to implement, like below.
Less ideal, but more practical
See below for a not-quite-perfect workaround that seems reasonably practical.
There's two variants we could choose between when applying LIMIT to the end of the query, each with their own trade-offs:

Don't use a subquery -- accepting the trade-off that a pre-existing LIMIT clause will lead to a syntax error.
Use a subquery -- accepting the trade-off that any pre-existing ORDER BY clause may be clobbered silently.

Is there any way that we have the best of both words without re-writing the query? I don't think so.
But we can do better than just choosing one to apply to all scenarios. Rather, we can dynamically choose one or other depending on the situation.
Proposal
I'd propose that we choose between these two (imperfect!) strategies:

IFF there is a pre-existing ORDER BY clause, Don't use a subquery.
IFF there is a pre-existing LIMIT clause, Use a subquery.

Both variants works great in all scenarios except the following edge case:
select 1 as id
order by id
limit 3

Either one will break down in this scenario, but each in a different way: Using variant 1 will lead to a syntax error, whereas for variant 2, the underlying database may clobber the order by clause.
Code
macros/overrides/show.sql
{% macro get_show_sql(compiled_code, sql_header, limit) -%}
  {%- if sql_header -%}
  {{ sql_header }}
  {%- endif -%}
  {%- if limit is not none -%}
    {%- if use_limit_subquery(compiled_code) is sameas true -%}
      {{ get_limit_subquery_sql(compiled_code, limit) }}
    {%- else -%}
      {{ get_limit_sql(compiled_code, limit) }}
    {%- endif -%}
  {%- else -%}
  {{ compiled_code }}
  {%- endif -%}
{% endmacro %}

{% macro get_limit_subquery_sql(sql, limit) %}
  {{ adapter.dispatch('get_limit_subquery_sql', 'dbt')(sql, limit) }}
{% endmacro %}

{% macro default__get_limit_subquery_sql(sql, limit) %}
    select *
    from (
        {{ sql }}
    ) as model_limit_subq
    limit {{ limit }}
{% endmacro %}

{% macro get_limit_sql(sql, limit) %}
  {{ adapter.dispatch('get_limit_sql', 'dbt')(sql, limit) }}
{% endmacro %}

{% macro default__get_limit_sql(sql, limit) %}
    {{ sql }}
    limit {{ limit }}
{% endmacro %}

{% macro use_limit_subquery(compiled_code) %}
  {{ adapter.dispatch('use_limit_subquery', 'dbt')(compiled_code) }}
{% endmacro %}

{% macro default__use_limit_subquery(compiled_code) %}
  {%- do return('order by' not in compiled_code.lower()) -%}
{% endmacro %}

Examples for variant 1
Please bear with the "LaTeX" casing I adopted in the example below. This mixed-casing is included to ensure the proposed solution is case-insensitive.
The example below demonstrates variant 1. To switch these examples to variant 2, just replace the use_limit_subquery macro with this definition instead:
{% macro use_limit_subquery(compiled_code) %}
  {%- do return('limit' in compiled_code.lower()) -%}
{% endmacro %}

Happy path 👍
The following models work as intended when using dbt show along with variant 1 as described above.
models/without_limit_or_order_by.sql
select 1 as id

dbt show runs this query:
    select *
    from (
        select 1 as id
    ) as model_limit_subq
    limit 5

models/without_order_by.sql
select 1 as id
LiMiT 3

dbt show runs this query:
    select *
    from (
        select 1 as id
LiMiT 3
    ) as model_limit_subq
    limit 5

models/without_limit.sql
select 1 as id
OrDeR bY id

dbt show runs this query:
    select 1 as id
OrDeR bY id
    limit 5

models/with_commented_limit.sql
select 1 as id
OrDeR bY id
-- LiMiT 3

dbt show runs this query:
    select 1 as id
OrDeR bY id
-- LiMiT 3
    limit 5

Unhappy path / edge case 👎
models/with_limit_and_order_by.sql
select 1 as id
OrDeR bY id
LiMiT 3

dbt show runs this query and generates a database syntax error:
    select 1 as id
OrDeR bY id
LiMiT 3
    limit 5

models/with_commented_order_by.sql
select 1 as id
-- OrDeR bY id
LiMiT 3

dbt show runs this query and generates a database syntax error:
    select 1 as id
-- OrDeR bY id
LiMiT 3
    limit 5

Making each variant configurable
We could consider making a flag so that users can toggle between which trade-off they want to accept (limit that clobbers order by vs. double limit syntax error). If we surfaced a flag, we could name it something like --limit-subquery / --no-limit-subquery.

Enthusiastic about a flag where you can choose your tradeoff!
I assume the above sample use_limit_subquery macros are intended as a proof of concept, but for the sake of completeness... code like row_number() over (partition by some_id order by date desc) and is_limited_liability_corp precludes us from using them as-is without Scunthorping ourselves.

Good point @joellabes ! Yep, this is a perfect example of two competing edge cases.
Variant 1 would be best for the is_limited_liability_corp edge case, whereas variant 2 would be better for the row_number() over (partition by some_id order by date desc) edge case.
As mentioned earlier, the code provided earlier comes with trade-offs that we can't fully get around without fully re-writing the query itself to either overwrite an existing LIMIT clause or to append one (which is ideal, but not trivial).
To avoid bewilderment/frustration while wrestling with this, I have to remind myself of the true root cause:

for some reason I don't understand, some data platforms don't preserve order by clauses when wrapped in a subquery .

So all these gymnastics are just trying to do our best to workaround that undesirable behavior.
Here's a few follow-up ideas that are not mutually exclusive and could be used in combination.
Idea 1
One idea would be making the "show strategy" configurable somehow on a model-by-model basis.
e.g., add a model config like the following:

limit_stategy

The available strategies could be named like this (or alternatives):

append_limit
subquery_limit / potentially_clobber_order_by
none / empty

The last one is to not apply any additional limit at all and just trust that the user is handling limits within the model itself.
Idea 2
Another idea is to allow users to make assertions about their model via a model-level config:
e.g., add a model config like the following:

has_limit and/or has_order_by

If we added a model-level config that allows users to be explicit, then we could raise appropriate warnings during inference, like:
Warning: It looks like the `abc` model might include a `LIMIT` clause at the end of the query.
If not, set the `has_limit` model config to `false`.
Warning: It looks like the `abc` model might include a `ORDER BY` clause at the end of the query.
If not, set the `has_order_by` model config to `false`.

Idea 3
The real edge case is when both LIMIT and ORDER BY are detected. The crux of the issue is that we know we want to limit the number of results in dbt show so that we don't use an excessive amount memory or screen real estate when the model has a ton of rows.
For users that have a limit clause at the end of their model code, we could encourage a pattern like the following that uses either the hard-coded limit in the model or the CLI limit (depending on which is least).
Suppose the user had this before:
limit 17

Then we'd encourage them to use the invocation_args_dict and the min filter to dynamically choose the lesser:
limit {{ [17, invocation_args_dict.get("limit", 999)] | min }}

Gnarly! 😬
But if the model has this code, then we can bypass adding another limit altogether because the model will already have it. But like in the other scenarios discussed above, we'd probably need the user to explicitly say that they don't need/want anything added to the show query (for this model specifically). i.e., the none / empty strategy described above.

I just wanted to offer another point of consideration - which is union. Adding a limit as an outer subquery vs. appending it to the end of a union query would yield different results for these two strategies (the outer subquery would result in limiting all results whereas appending to the query would only limit the last query in the union). I'm not sure I could offer a great solution for this. My mind goes toward further analyzing the query and deciding whether or not to append it to the query or use a subquery based on whether or not the query contains a union statement in the "base" query (outside of CTEs). More to potentially consider.

Hey @kristinguyle! Sorry that this has broken your workflow. Here's the recap:

The dbt Cloud IDE is designed for developing models, and part of that tooling includes the ability to preview a query and download the results to a spreadsheet.
For performance reasons (both your browser tab and our servers), we limit the number of rows returned by those previews to 10,000 (which is plenty for its intended purpose of checking "does my query behave the way I expect?")
dbt core v1.5 and earlier had a bug which meant that it was unintentionally possible to retrieve larger rowcounts. Later versions implement filtering on both the client side (your browser) and server side, so even overriding the macros will not enable you to retrieve infinite rows.
The change described in this issue and its corresponding PR impacts how dbt core applies the limit (to fix a bug where rows were sometimes incorrectly sorted), but it doesn't have anything to do with whether dbt Cloud should ask core to apply the limit.

The Cloud IDE team are not going to re-enable arbitrarily large query previews or downloads, but that doesn't mean you need to move off of dbt. dbt is an excellent tool for building and testing your tables (such as stg_syspro__inventory_master), but it's not intended to be used for data exports.
Instead, you should consider one of the following approaches:

Most BI tools support scheduled exports of data; it's likely that you could instead download the raw data from inside your BI tool
Your data warehouse's query tool might support arbitrarily large downloads. For example, the old Snowflake web experience had a limit of 100MB but my understanding is that the new Snowsight experience can download any size file. (You can read more about Snowflake options here)
If neither of those web-based experiences are possible, you could also consider downloading a SQL workbench such as DBeaver which lets you export the results of a query to CSV.

One other clarification: all of the limits are only applied during preview queries in development. If you have a billion row model, all billion rows will be built into your warehouse with dbt run, not just the first 10k.

@joellabes  your response highlights a key oversight by DBT in its shift away from supporting centralized data teams. This change now forces us to introduce additional tools into our existing data ecosystem, which undermines both the efficiency and cost-effectiveness of our operations. The cascading impact on our ability to deliver timely and accurate data to our stakeholders is pushing us to consider alternative platforms.
We've relied on DBT for a long time, particularly appreciating its ability to serve as an integrated, all-in-one solution for data transformation and modeling. However, it now appears that this model was not truly supported in the long run.
Here’s a breakdown of the challenges we're facing with this transition under your proposed solutions:

Extracting Raw Data from BI Tools: We are now back to relying on Excel as a quasi-database solution, which introduces manual processes and increases the likelihood of errors. In 2024, this is an impractical and outdated approach for enterprise-level data management.

Querying in Snowflake: While it’s technically feasible, Snowflake’s native querying capabilities are less streamlined than DBT’s approach, especially when managing complex data transformations. Additionally, direct interaction with Snowflake for this purpose increases security risks, as it opens up access points for potentially sensitive datasets.

Introducing a Third SQL Workbench: Adding another SQL interface to our stack creates redundancy and confusion within the team. It dilutes operational efficiency, complicates workflows, and introduces friction in collaborative data development.

This fragmentation of tools and processes is a significant step back for data professionals who need agility and cohesion in their workbench. As such, the shift DBT is making not only affects technical efficiency but also the strategic alignment of data delivery with business needs.

@kristinguyle the specifics of the problems you're describing make me think that we're slightly misaligned. Put another way, I sympathise with the high level goals you have, but I disagree with your assessment that dbt is shifting away from supporting centralised data teams, and the approaches you're describing don't mesh with my understanding of most dbt projects.
Instead of going back and forth on a GitHub issue, could we discuss this live? Here's a meeting booking link - I think I'll be able to be more helpful that way. (Heads up: after this week I'm travelling for our conference and PTO so most of October doesn't show availability).

I believe this is resolved by https://github.com/dbt-labs/dbt-adapters/pull/249, so I'm going to close this issue.
But if it persists or comes up again, please open a new issue and reference this one 🙏


Fix/binance get orders api call

Description
All 4 of my bots have had open orders since yesterday, leaving 1p quote currency left in my account. One of my bots was crashing 5/6 times an hour and often failed to restart after exception. This was the issue:
Exception('Insufficient Quote Funds! (Actual: 0.01, Minimum: 10.0)')
Exception: Insufficient Quote Funds! (Actual: 0.01, Minimum: 10.0)

During handling of the above exception, another exception occurred:

Exception: Insufficient Quote Funds! (Actual: 0.01, Minimum: 10.0)

I traced back the problem to the actual api call to get_all_orders, which quite frequently returns nothing. I gave it three chances to get the information. Left the bot running overnight and this has fixed the issue. Looking through the logs, it did often need all 3 attempts, so hopefully this is sufficient.

Type of change
Please make your selection.

[X] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] This change requires a new dependency
[ ] Code Maintainability / comments
[ ] Code Refactoring / future-proofing

How Has This Been Tested?
Tested live on binance. All good.
Checklist:

[X] My code follows the style guidelines of this project
[X] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[X] My changes generate no new warnings
[ ] I have added pytest unit tests that prove my fix is effective or that my feature works
[X] New and existing unit tests pass locally with my changes
[ ] Any dependent changes have been merged and published in downstream modules
[ ] I have checked my code and corrected any misspellings

Should also say that adding --lastaction BUY does not get around this issue, as the bot still checks on every cycle


Add builders example

@antoyo This PR better be against "pending" branch

@antoyo What's the status here? Would be good to have this updated against the pending branch and then merge it :)

@GuillaumeGomez Good for me now :)

Waiting for CIs in any case. :)

Thanks @antoyo!


Bluetooth: GATT Subscribe does not detect duplicate if new parameters are used.

Describe the bug
Similar to #15098. It is possible to issue a new subscribe command to previously subscribed handles by using a different subscribe param struct.
Expected behavior
Iterare over existing subscriptions and compare handles.

We do support multiple subscription to the same CCC, it does actually iterate to check that:
https://github.com/zephyrproject-rtos/zephyr/blob/master/subsys/bluetooth/host/gatt.c#L2733
Im closing it as it is working as intended, if you want to add an API to query existing subscription that is a different API, though Id consider a bug if an application cannot really check its own subscription since the parameters are owned by it.


Check if for-of iterated element types are disposable when using using declarations

fixes https://github.com/microsoft/TypeScript/issues/60348
cc @rbuckton

@typescript-bot test it
(not that there are a major number of these in the wild, or even using in general yet)


Fix minor bug in wilayaProjection, upgrade packages and update .npmignore

Changes:

Added .eslintignore and *.tgz to .npmignore
Upgraded packages and remove deprecated fields from stryker config
Fix a bug in wilayaProjection when passing an empty array, now it returns the data as it is (same as we treat undefined)
Apply object-curly-spacing Eslint rule

Codecov Report

Merging #37 into develop will not change coverage.
The diff coverage is 100.00%.

@@            Coverage Diff            @@
##           develop       #37   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files           14        14
  Lines          100       100
  Branches        18        18
=========================================
  Hits           100       100

Impacted Files
Coverage Δ

src/utils/projections/wilayaProjection.js
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 6540744...362c9fa. Read the comment docs.

@all-contributors add me for maintenance, code and review

@all-contributors add @Fcmam5  for maintenance, code and review


Additional Security steps

[ ] https://wiki.archlinux.org/title/USBGuard

[x] https://wiki.archlinux.org/title/Sysctl#TCP/IP_stack_hardening

[ ] https://wiki.archlinux.org/title/Firejail

[ ] https://linuxreviews.org/Linux_Kernel_Runtime_Guard#Installation
https://aur.archlinux.org/packages/lkrg-dkms/

[x] https://wiki.archlinux.org/title/security#Disable_kexec

[x] https://wiki.archlinux.org/title/security#Restricting_module_loading

[x] https://wiki.archlinux.org/title/security#BPF_hardening

[x] https://wiki.archlinux.org/title/Su#su_and_wheel

[ ] https://wiki.archlinux.org/title/Solid_state_drive#Setting_the_SSD_state_to_"frozen"_after_waking_up_from_sleep

[ ] https://wiki.archlinux.org/title/security#Enforce_a_delay_after_a_failed_login_attempt

https://wiki.archlinux.org/title/Sysctl#TCP/IP_stack_hardening
net.ipv4.tcp_rfc1337 = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.icmp_echo_ignore_all = 1
net.ipv6.icmp.echo_ignore_all = 1

https://wiki.archlinux.org/title/security#Restricting_module_loading
Kernel parameters
module.sig_enforce=1

https://wiki.archlinux.org/title/security#Disable_kexec
Kernel parameters (Sysctl)
/etc/sysctl.d/51-kexec-restrict.conf
kernel.kexec_load_disabled = 1

https://wiki.archlinux.org/title/security#BPF_hardening
Kernel parameters (Sysctl)
/etc/sysctl.d/53-disable-ebpf.conf
kernel.unprivileged_bpf_disabled=1
net.core.bpf_jit_harden=2

https://wiki.archlinux.org/title/Su#su_and_wheel
Uncomment line
/etc/pam.d/su; /etc/pam.d/su-l
auth required pam_wheel.so use_uid

https://wiki.archlinux.org/title/Solid_state_drive#Setting_the_SSD_state_to_"frozen"_after_waking_up_from_sleep
/usr/lib/systemd/system-sleep/ssd-freeze.sh
#!/bin/sh
if [ "$1" = 'post' ]; then
	sleep 1
	if hdparm --security-freeze /dev/disk/by-id/ata-name-of-disk; then
		logger "$0: SSD freeze command executed successfully"
	else
		logger "$0: SSD freeze command failed"
	fi
fi

https://wiki.archlinux.org/title/security#Enforce_a_delay_after_a_failed_login_attempt
Add line
/etc/pam.d/system-login
auth optional pam_faildelay.so delay=8000000

Packages
https://wiki.archlinux.org/title/USBGuard
https://wiki.archlinux.org/title/Firejail
repo
usbguard
firejail

https://wiki.archlinux.org/title/USBGuard
https://aur.archlinux.org/packages/lkrg-dkms/
aur
usbguard-notifier
lkrg-dkms

https://wiki.archlinux.org/title/USBGuard
Enable
usbguard-dbus.service

https://wiki.archlinux.org/title/Firejail
Execute
sudo firecfg
Create
/etc/pacman.d/hooks/custom-firejail.hook
[Trigger]
Type = Path
Operation = Install
Operation = Upgrade
Operation = Remove
Target = usr/bin/*
Target = usr/local/bin/*
Target = usr/share/applications/*.desktop

[Action]
Description = Configure symlinks in /usr/local/bin based on firecfg.config...
When = PostTransaction
Depends = firejail
Exec = /bin/sh -c 'firecfg >/dev/null 2>&1'

Check

/usr/local/bin must be set before /usr/bin and /bin in the PATH environment variable
grub-install

lkrg is experimental. Since it is not really necessary and more of a backup security measure (Secure boot,lockdown,..) in this setup, I will not use it.

https://man.archlinux.org/man/tmpfs.5

/var
Maybe create subvolumes only in subdirectories of /var.
This is recommended!

/home

3 errors failed to load kernel modules on nvidia-dkms.
This probably means that they are unsigned!

Transfer dot-files.sh to every User and chown


When you finish a level you start at the end

I'm not sure if it's supposed to be like this, but when you finish a level pack and you play it again later, you start at the last level, so if I wan't to play the entire pack again, I have to constantly die if I can, and otherwise wait 10 minutes per life. And sometimes I get to 99 lives...

You can use the left and right arrow keys at the level selection screen to choose what level you want to play.

As a side note, it literally says this on the title screen "Press <> to select level".


Created WSL_APK_INSTALL.md and install guide for WSL2

Created a guide to be able to build and install the Bitcoin Core QML APKs on an Android device using WSL2 and Ubuntu 22.04
Please review and let me know if there's anything missing and if you think it would be helpful to add to the docs so that others building using WSL will have some reference?
Looking forward to feedback

Please rebase.
https://discord.com/channels/903125802726596648/903126039084015638/1146922061449666602

Closing for now, feel free to reopen in new PR which is rebased over main


Add Kept on Death plugin

Modifies the Items Kept on Death widget to interactive and slightly more accurate. If the player is inside a safe zone the normal interface will be shown.
Although this is an improvement on the original interface there may be situations where the new interface is wrong. Please report these cases so we can improve the interface further

It will automatically detect if the player is Skulled, Protecting Item, and the Wilderness safety (Low Lvl/High). It also support PvP world Safe/Non Safe areas.
Death Mechanics

Known Death Mechanics:
These mechanics should never change.

Every account protects 3 items.
Skulled account loses all Items
Protect item keeps an additional item based on value
UIM accounts lose all items, like they were Skulled.

Assumed Death Mechanics:
These mechanics were implemented due to server instability and are still not fully understood.

Outside wildy (Non-PvP death): Most non-tradeable items are kept (ie, Looting bag is lost)
Lvl 1-20 wildy: Non-tradeable items are lost on death unless they are one that turns into a broken variant.
Above 20 wildy: Non-tradeable items are lost on death and turned into coins.

The assumed death mechanics apply after the Known death mechanics which means You can keep untradeable items above 20 wildy if they are kept by the Known death mechanics.

Imo this could be placed inside the death indicator plugin, not sure

The Updated Skulled reminder text doesn't seem too helpful. Why remove the bit about "the normal amount of items you keep is 3. You're marked with a PK skull ....". And the bit that says "Protecting 0 items by default PK skull -3" isn't really all that clear.

Also I'm not too familiar with the wilderness mechanics but why would the bag looking thing with the white outline be lost in <20 wilderness but kept when skulled. Is that right?

@daviscook477 The Rune Pouch has a white outline by default but is protected on deaths in non-pvp scenarios. The skulled pictures were in a safe zone so it was added to the top part without the white outline. I guess I could remove the white outline in both cases.
As for why I updated the text, its extremely cluttered with the default text and I added two new sentences which would not have fit otherwise. This photo doesn't even have the bond text.

Maybe removing the white outline would be helpful. It's a bit misleading for the game to say "items with a white outline will always be lost" and then it not be true. I still think the "Protecting 0 items by default PK skull -3" is a bit confusing. What is that text trying to communicate?

The interface has been reworked to be interactive with toggles for the different effects. See gif:

A few use cases were also addressed:

Added PvP world support
Show default interface inside safe zones (PoH/Clan Wars/etc)
Fixed incorrect interface being shown when widget is rebuilt

Value of items doesn't work correctly for noted items
Max items kept on death doesn't account for stacked items

Looks like rune pouch doesn't count towards total but does currently? Not sure about the other AlwaysLost items

Extra blank row for kept items? (Barrows is degraded btw)

I fixed a few minor things, but I'm unsure of how the game handles ornate items in the wilderness. I.E. occult ornate is 4.8m (3.9m kit, 900k occult). What value does the game use?


Bump authoritative version due to advisory

PowerDNS Security Advisory 2016-01: Crafted queries can cause unexpected backend load
CVE: CVE-2016-5426, CVE-2016-5427
https://doc.powerdns.com/md/security/powerdns-advisory-2016-01/
make some small documentation tweaks
add a rake file for testing
Remove old chef 12 version for testing

This looks solid to me 👍

the changelog for 3.X.X to 3.4.10 should be noted as well.

The default for any-to-tcp has been changed to 'yes'.
any-to-tcp
Boolean
Default:
Available since: 3.3
Answer questions for the ANY and RRSIG types on UDP with a truncated packet that refers the remote server to TCP. Useful for mitigating reflection attacks.

@onlyhavecans We can note the Changelog from PowerDNS, but I personally don't think it's relevant. The primary reason for the change is due to the CVE so just our default installation is changing.


SDP-817: add a new page to the Stellar Disbursement Platform section, covering the SDP<>Wallet integration

What
Add a new page to the Stellar Disbursement Platform section, covering the SDP<>Wallet integration.
It includes:

How to add a wallet to the SDP
How the registration flow works from the recipient's point of view (with screenshots)
How to interpret and ingest the registration deep link
Deferred deep links, and its redirect strategy

Why
Most of this documentation was in the https://github.com/stellar/stellar-disbursement-platform-backend, but we should concentrate documentation in the official docs instead.

Preview is available here:http://developers-pr227.previews.kube001.services.stellar-ops.com

Preview is available here:http://developers-pr227.previews.kube001.services.stellar-ops.com

Preview is available here:http://developers-pr227.previews.kube001.services.stellar-ops.com

The new page is available at https://developers-pr227.previews.kube001.services.stellar-ops.com/docs/category/use-the-stellar-disbursement-platform > Making Your Wallet SDP-Ready:

Preview is available here:http://developers-pr227.previews.kube001.services.stellar-ops.com


The window for Notion is not tiled.

The application for https://www.notion.so is not tiled on macOS big sur.

Notion is tiled perfectly on my side (the latest version of macOS big sur). So I think there is nothing wrong with yabai and Notion.

What is the meaning of your screenshot?
If other applications are tiled well, try to restart the yabai service by running launchctl kickstart -k "gui/${UID}/homebrew.mxcl.yabai" in your terminal, and see whether Notion will be tiled.
Try to reinstall Notion app, or yabai.
On my side, everything works perfectly.

Thank you for the reply. The screenshot is to show that Notion is not tiled on my computer and I don't configured it in yabairc.
This is a long-term issue on my compute. Computer has been restarted many times in the past. Notion and yabai have been upgraded for several times.

Are other apps tiled well? If so, please put your yabairc here.

Yes, other windows work as expected.
Here is a copy of my configuration
#!/usr/bin/env sh

# the scripting-addition must be loaded manually if
# you are running yabai on macOS Big Sur. Uncomment
# the following line to have the injection performed
# when the config is executed during startup.
#
# for this to work you must configure sudo such that
# it will be able to run the command without password
sudo yabai --load-sa
yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa"

# global settings
yabai -m config mouse_follows_focus on
yabai -m config focus_follows_mouse autofocus

yabai -m config window_placement second_child

yabai -m config window_topmost off

yabai -m config window_shadow on
yabai -m config window_opacity on
yabai -m config window_opacity_duration 0.0
yabai -m config active_window_opacity 1.0
yabai -m config normal_window_opacity 0.30

yabai -m config window_border on
yabai -m config window_border_width 8
yabai -m config active_window_border_color 0xff775759
yabai -m config normal_window_border_color 0xff555555
yabai -m config insert_feedback_color 0xffd75f5f

yabai -m config split_ratio 0.50
yabai -m config auto_balance off
yabai -m config mouse_modifier fn
yabai -m config mouse_action1 move
yabai -m config mouse_action2 resize
yabai -m config mouse_drop_action swap

# general space settings
yabai -m config layout bsp
yabai -m config top_padding 08
yabai -m config bottom_padding 08
yabai -m config left_padding 08
yabai -m config right_padding 08
yabai -m config window_gap 06

# space 1: terminal

# space 2: coding

# space 3: browser

# application excpetions
yabai -m rule --add app="^(AppCleaner|Garmin Express|GPG Keychain|Logi Options|Toggl Track|WeChat|YoudaoDict)$" manage=off
yabai -m rule --add app="^(System Preferences|System Information)$" manage=off

# dialog boxes
yabai -m rule --add app="^Firefox$" title="^Opening .*$" manage=off

# buildin status bar (does not work)
# yabai -m config status_bar                   on

# status bar
# SPACEBAR_HEIGHT=$(spacebar -m config height)
SPACEBAR_HEIGHT=0
yabai -m config external_bar all:0:30
# Refresh spaces widget on space change
yabai -m signal --add event=space_changed action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'"
# Refresh spaces widget on display focus change
yabai -m signal --add event=display_changed action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'"
# Refresh spaces widget on window resize
yabai -m signal --add event=window_resized action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'"
# Refresh process widget on space change
yabai -m signal --add event=space_changed action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-process-jsx\"'"

# Refresh process widget on when focused application changes
yabai -m signal --add event=window_focused action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-process-jsx\"'"
# Refresh spaces widget on when focused application changes
yabai -m signal --add event=window_focused action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'"

# Refresh process widget on when focused application changes
yabai -m signal --add event=application_front_switched action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-process-jsx\"'"
# Refresh spaces widget on when focused application changes
yabai -m signal --add event=application_front_switched action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'"

# Refresh process widget on when an application window is closed
yabai -m signal --add event=window_destroyed action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-process-jsx\"'"
# Refresh spaces widget on when an application window is closed
yabai -m signal --add event=window_destroyed action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-spaces-jsx\"'"

# Refresh process widget when current window title changes
yabai -m signal --add event=window_title_changed action="osascript -e 'tell application id \"tracesOf.Uebersicht\" to refresh widget id \"simple-bar-process-jsx\"'"

echo "yabai configuration loaded.."

Please try to use the minimal yabairc, e.g., the example one shipped with yabai (https://github.com/koekeishiya/yabai/blob/master/examples/yabairc), and see what happens.

It is tiled now. Interesting...

Thank you. I don't how to reproduce the bug again.

Lol. Interesting. Anyway, glad to see it works on your side. :)

So strange, Notion not tiled on MacOS 12.1 Monterey. I tried the minimal yabairc and reinstall Notion, not work.


Update dependencies

Did chores.

Update yultsur parser and update dependency
Update the sonatina dependency to the current sonatina main
Remove unnecessary dependencies

@sbillig I'm going to merge this since the change is trivial.


Create "Report Modal"

User Story: As a Logged In User, after I report a post, I want to be notified that the post I reported, has been reported.
Designs: https://www.figma.com/file/EMKcg0eTnOlr7bRZGFdnZu/Web-app-product-spec?node-id=88%3A2

Success Story: Users are notified once they report a post.
Ensure that you set the base branch of your pull requests to feature/postmoderation.

I think this should be closed if QA tests are finished


Sidebar with "nav-sm" on current page always display child menu

Hi All, first thanks for your amazing template.
Not sure if is an issue, so if you please confirm behavior will be great. When using <body class="nav-sm"> and menu find your current page, automatically show the child menu items for that father.

(yellow is the current and this is showing when page is loading)
I saw a similar wording change in pull request ([https://github.com/puikinsh/gentelella/pull/281]) but not work for me.
Making a change in custom.js i was able to not show the child items and also reflect the active menu, but if i click again, lost the active, and the second click show the child menu
This is the change:
Commented line:
//$SIDEBAR_MENU.find('a').filter(function () { //    return this.href == CURRENT_URL; //}).parent('li').addClass('current-page').parents('ul').slideDown(function () { //    setContentHeight(); //}).parent().addClass('active');
New one:
$SIDEBAR_MENU.find('a').filter(function () { return this.href == CURRENT_URL; }).parent('li').addClass('current-page').parents('ul').parent().addClass('active active-sm');
Version i use is getting from bower and version is: "gentelella": "^1.3.0"
Thanks in advance.

remove this line :
.parent("li").addClass("current-page").parents("ul").slideDown(function() { e() })
custom.min.js

perfect, thanks!

a simple way is to change/apply display:none to the object

Non of these solutions worked for me. seems that what ever I am doing always when I am opening it displays open sub meniu.

Guys I need a help... I included a include page in div id=content where that links are going to open, and I would like that (when on mobile) in the moment the user clicks on a link the menu totaly disapare.
Can someone help me?


Add fmt and linter workflow

Github Actions #4

Generally I have nothing against it and if you want merge it ayntee. But if you do I will stop using the boilerplate.

I might have phrased this a bit rude, let me explain my point.

I might have phrased this a bit rude, let me explain my point.

I think we should wait for the linter to be stabilized.

Linter are annoying by design :)
As ayntee said the rules looks pretty similar to eslint ones. We can still ignore rules that are buggy or don't fit the use case.
I ignored line by line, eg all the async func instead of promises, but we can ignore the entire file and maybe disbale an entire rule soon.

tbh I hate ignore comments.

Yes this is ugly but still better than ignoring an entire rule or the entire file

Just my 2 cents:

I would make sure .vscode has linter disabled by default as its unstable
I think if 1 is done the problems itoh mentioned won't occur and the comments are just there. Sure its a few extra unneeded comments but for those that do want a linter once they enable it its better these comments are present.

comment out the linter step temporarily while it is unstable.

This would make the pr mergeable and useable by anyone. It also adapts to everyones needs imo

Good idea. Let me modify my pr

Just my 2 cents:
1. I would make sure .vscode has linter disabled by default as its unstable

2. I think if 1 is done the problems itoh mentioned won't occur and the comments are just there. Sure its a few extra unneeded comments but for those that do want a linter once they enable it its better these comments are present.

3. `#` comment out the linter step temporarily while it is unstable in the GH Action so users dont get scared why they have errors on github

This would make the pr mergeable and useable by anyone. It also adapts to everyones needs imo

We can try to remove some of the lint warnings by "fixing" the code; for instance, the reuiqre-await rule can be resolved by just removing async from the function.

Just my 2 cents:
1. I would make sure .vscode has linter disabled by default as its unstable

2. I think if 1 is done the problems itoh mentioned won't occur and the comments are just there. Sure its a few extra unneeded comments but for those that do want a linter once they enable it its better these comments are present.

3. `#` comment out the linter step temporarily while it is unstable in the GH Action so users dont get scared why they have errors on github

This would make the pr mergeable and useable by anyone. It also adapts to everyones needs imo

We can try to remove some of the lint warnings by "fixing" the code; for instance, the require-await rule can be resolved by just removing async from the function.

I tried this on my bot. This look easy but caller are looking for promises. And the async syntax is more readable


odysee-android-floss is not the FLOSS version of odysee-android

The naming scheme leads people to think that [odysee-android-floss] is the FLOSS version of [odysee-android], which is not the case. For example: https://github.com/OdyseeTeam/odysee-android/issues/139#issuecomment-1065971822 and https://github.com/OdyseeTeam/odysee-android/issues/148#issuecomment-1151690021
This is not a fork of odysee-android, but instead is a wrapper for [odysee-frontend] (code that runs odysee.com).
Please make this clear in the README.md file! #8

I think it's done, from newest readme file of odysee-android :
Build Variants
There are two build variants: Full and FOSS. The Full variant uses Google APIs and the FOSS variant doesn't. You can switch between them on the "Build Variants" tab in Android Studio.
Whether or not  it's still the case of if that staddles the line of Build Variant or not or if they should just explicitly be named as two different apps, I'm not sure (not sure where that line would be either, to be honest... though I can see how that could be a subjective opinion as well)... though the versioning of both do seem to stay close, with FLOSS just slightly behind usually...


Feature request: highlighting the input

[X] I have read through the manual page (man fzf)
[X] I have the latest version of fzf
[X] I have searched through the existing issues

Info

OS

[X] Linux
[ ] Mac OS X
[ ] Windows
[ ] Etc.

Shell

[ ] bash
[X] zsh
[ ] fish

Feature
The global feature would be to add special highlight ( change color and/or add a character before the file name ) to some input regarding a certain rule.
This would help the user differentiate the input instantly.
example when using fzf with ls | fzf:

Adding  a 📄 character in next to file ending with .txt
Changing the color to dark grey if the file is listed in the gitignore.

implementation
It could look like:
fzf --highlight 'if(echo {} | grep ".txt"):suffix=📄'
of
fzf --highlight 'if(cat .gitignore | grep {}):color=darkgrey'
meaning:
if cat .gitignore | grep {} return good exit code ( 0 ), change the color of the given input to darkgrey. ( else do nothing )
use cases
This would empowered application using fzf for more that a simple filter, like forgit.
With gitui ( https://github.com/extrawurst/gitui) you can press enter on a file to add it to the stage, or i to add it to the gitignore, which is very useful.
This could be done easily with fzf with the following command:
git add $( ls | fzf --bind 'ctrl-i:execute-silent( echo {} >> .gitignore )+reload(ls)' --highligh 'if(cat .gitignore | grep {}):color=darkgray+suffix=[i]

Formatting can be done outside of fzf, and we recommend that you do so with specialized programs that are far more capable than fzf in that regard.
FZF_DEFAULT_COMMAND="ls | my-cool-formatter" \
  fzf --bind 'ctrl-i:execute-silent( echo {} >> .gitignore )+reload($FZF_DEFAULT_COMMAND)'


View and filter/sort submitted monument records

Selection on left panel to be able to view a list of all submitted Monument Records.
Filter by:

Submitter's name
County
BLM ID
Status
MRRC Contract (y/n) - this is a new checkbox for monument record submission

Ability to kick to map to view filtered selection of points, or an individual point.

closed in favor of #171


Added Death of the Gods press mention

Replaces https://github.com/pol-is/polisClientAdmin/pull/3
(Happy to see it closed if no longer relevant)

Closing this as part of repo transfer (https://github.com/pol-is/polis-issues/issues/134), but will cross-ref there so convo not lost.


Remove upper case of celery config template. (closes #76)

Now, celery config will be with lower case settings.
Se more here: http://docs.celeryproject.org/en/latest/userguide/configuration.html#new-lowercase-settings
Please, tell me if something is strange to you guys!
Thank you!

Current coverage is 91.47% (diff: 100%)

Merging #77 into master will not change coverage

@@             master        #77   diff @@
==========================================
  Files            15         15
  Lines           387        387
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
  Hits            354        354
  Misses           33         33
  Partials          0          0

Powered by Codecov. Last update d053232...b88891f

Celery 4.0 was just released a few weeks ago with support for this, and it will be able to read the old style for at least a major version cycle it sounds like. Making this change would remove compat with older Celery for no clear benefit at the moment. Maybe circle back on this in a year or two?

Yes, I agree with you @coderanger, no problem ! But with this changes application_celery_config will be compatible with new celery version. What do you think if we add some setting to enable this? So, keeping compatible with older and newer versions.
Thank you!

It is already compatible, the Celery 4.0 release notes make it very clear that the old config options still work fine and will continue to work. Are you seeing a specific error?

Going to close this out, from other questions elsewhere the error the user was seeing was due to using the wrong config option name.


Add an option to systemd_journald receiver to filter by service

It'd be very useful for my use case to be able to the configure systemd_journald receiver to only fetch logs from an specific service. Fluent Bit seems to have this implemented, so my guess is that this would only be a matter of exposing Systemd_Filter to the user. Something like:
  receivers:
    systemd_logs:
      type: systemd_journald
      systemd_filter:_SYSTEMD_UNIT=name.service

Hi @dcfreire, thanks for the feature request -- this sounds very reasonable. We'll open a tracker internally for it and I'll keep this issue updated once it's prioritized.
As a workaround, are you able to use exclude_logs to filter out anything that's not from name.service? Something like this, unfortunately it's a bit more obtuse:
  receivers:
    systemd_logs:
      type: systemd_journald
  processors:
    name_service_only:
      type: exclude_logs
      match_any:
      - jsonPayload._SYSTEMD_UNIT != "name.service"
  service:
    pipelines:
      systemd:
        receivers:
        - systemd_logs
        processors:
        - name_service_only

Sorry for taking a while to reply, but yes I am, and I did :). I was going to open a PR myself, but then I saw  this comment by the author of the PR that implemented the systemd logging receiver that made it seem that this was a design choice, rather than something he overlooked.


Fix RISC-V version string so it gets sorted correctly in API

This only impacts RISC-V and won't touch JDK15 or any production platform so I'd quite like to get this tested ASAP since I'm getting asked about it. Happy to force it back immedaitely if it causes any issues.
Signed-off-by: Stewart Addison<EMAIL_ADDRESS>

Exception granted to allow this to go out during a release.

This appears to have worked - RISC-V builds now showing in https://adoptopenjdk.net/nightly.html?variant=openjdk11&jvmVariant=openj9 :-D
From the API the latest nightly can be directly pulled from https://api.adoptopenjdk.net/v3/binary/latest/11/ea/linux/riscv64/jdk/openj9/normal/adoptopenjdk?project=jdk


Som work

Corresponding Issue(s):

N/A
Summary of change(s):
Reason for Change(s):

iam_default module:

new IAM module to handle creation of the service role as you would receive if performed the first time you use the service in the console

vault module:

renamed/reordered inputs
reordered outputs
updated README block and file
updated examples
renamed resource

plan module:

renamed/reordered inputs
reordered outputs
updated README block and file
updated examples
renamed resources

selection module:

renamed/reordered inputs
reordered outputs
updated README block and file
updated examples
renamed resources
handle fallback case of using the default IAM role ARN in lieu of anything else

backup module:

updates to reflect changes in other modules

tests:

update to reflect changes in modules

README.md in root:

update to reflect new module
formatting

Will the change trigger resource destruction or replacement? If yes, please provide justification:
Rename of some underlying resources to work with newer standards, assume as SOM is not signed off this module has had low usage so impact should be minimised.
Does this update/change involve issues with other external modules? If so, please describe the scenario.
No
If input variables or output variables have changed or has been added, have you updated the README?
Done
Do examples need to be updated based on changes?
Done
Note to the PR requester about Closing PR's
Please message the person that opened the issue when auto closing it on slack, as well as any other stake holders of deep interest. Only close the issue if you believe that the issue is fully resolved with this PR.
This PR may auto close the issue associated with it. If you feel the issue is not resolved please reopen the issue.

All the code so far looks good.  As we discussed offline, just looks like we need to fix up the inter-module dependency chain.


How to update the command list?

It automatic updates every seven days. Or you can just type tldr -u to manually update the command list.

thanks :)


Test peer/orderer separately

Often we need to spot network bottleneck by testing 3 phases Endorsement - Order - Commitment separately:

generate Proposals to peer and observe endorsement ProposalResponse
generate Envelope to orderers and observe ordered Block
generate Block to peer and observed committed Block (this is the most tricky one)

This could help us benchmarking fabric components in finer-grained manners.

Is it finished？


Fix linting issues, define and apply stricter linter configuration

This PR updates the analysis_options.yaml file with a slightly stricter configuration, and addresses existing and new hints provided by the linting step.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 83.17%. Comparing base (3bdacee) to head (00d30ee).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #103   +/-   ##
=======================================
  Coverage   83.17%   83.17%
=======================================
  Files          11       11
  Lines         731      731
=======================================
  Hits          608      608
  Misses        123      123

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Migration to Wagmi V1 and Viem

Description :
When we created se-2-challenges repo at that time SE-2 didn't have Wagmi V1 & Viem.
So basically in SE-2 on frontend side we are no more using ethers instead we are using viem. Also there are some minor api changes.
As I see people don't focus on the frontend in initial challenges, so it's kind of ok to have it a bit outdated but I think we should start slowly migrating to the latest changes of SE-2 at least till Wagmi V1 & Viem (also in se-2-challenges we are also kind of pushing them toward frontend a bit).
Because incase of curiosity if people go to wagmi docs they will be seeing V1 docs, also same for daisyUI docs  it will take them to V3 docs and in challenges we are using v2 docs (Not that big deal for daisyUI).
Regarding MultiSig Challenge #19  and SVG NFT #20  challenge I think these challenges must for sure use the latest SE-2 changes at least with Wagmi v1, viem, and daisui V3 because at this challenges people start understanding/exploring the scaffold-eth frontend more.
### Tasks
- [x] Migrate base template to wagmi v1, Viem and DaisyUI v3
- [ ] Migrate Challenge 0
- [ ] Migrate challenge 1
- [ ] Migrate challenge 2
- [ ] Migrate challenge 3
- [ ] Migrate challenge 4
- [ ] Migrate challenge 5

@mertcanciy hey, do you want to take challenge 4?


Allow taking leave when assignment is already present.

When assignment is present, TakeLeaveCommand makes use of ReassignCommand instead.
Resolves #140

Codecov Report

Merging #192 into master will increase coverage by 0.34%.
The diff coverage is 96.29%.

@@             Coverage Diff              @@
##             master     #192      +/-   ##
============================================
+ Coverage     69.25%   69.59%   +0.34%
- Complexity      849      856       +7
============================================
  Files           136      136
  Lines          2999     3026      +27
  Branches        412      414       +2
============================================
+ Hits           2077     2106      +29
+ Misses          796      794       -2
  Partials        126      126

Impacted Files
Coverage Δ
Complexity Δ

...scheduler/logic/commands/MassTakeLeaveCommand.java
96.00% <90.00%> (+0.16%)
17.00 <1.00> (ø)

...va/mcscheduler/logic/commands/ReassignCommand.java
72.13% <100.00%> (-0.18%)
14.00 <0.00> (-1.00)

...a/mcscheduler/logic/commands/TakeLeaveCommand.java
100.00% <100.00%> (ø)
16.00 <9.00> (+7.00)

src/main/java/mcscheduler/model/role/Leave.java
40.00% <0.00%> (ø)
3.00% <0.00%> (+1.00%)

src/main/java/mcscheduler/model/shift/Shift.java
86.56% <0.00%> (+1.49%)
28.00% <0.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 746cc12...9a9e096. Read the comment docs.


Small screen display issues

I attached a screenshot of the pOnewheel app running on my Samsung Galaxy Alpha (an older phone running 5.0.1).  Please notice that the 5 shapings contain wrapped words.  Also, look just above at the battery section.  Due to wrapped words, the text does not all fit in the box.
If you can detect the screen resolution and choose a smaller font at lower screen sizes, that would be helpful.
This screenshot is taken while running the beta app from the app store.

@biell Thanks for the screenshot! I think Android has a nice new library for auto-sizing text that I've been meaning to try out.


Stream the output of docker build commands in packaging

Description
When building docker images we don't see output from the underlying docker build commands.
The relevant output during the docker build process:
$ /build/node_modules/.bin/ts-node docker/scripts/prepare-containers.ts
CLI options: {"_":[],"npmTag":"local","npm-tag":"local","dockerTag":"local","docker-tag":"local","dev":false,"$0":"docker/scripts/prepare-containers.ts"}
Running command: 'docker run -d --rm --name airnode-npm-registry-154a2a4f verdaccio/verdaccio:latest'
Running command: 'docker inspect --format '{{.NetworkSettings.IPAddress}}' airnode-npm-registry-154a2a4f'
Running NPM registry container. Name: airnode-npm-registry-154a2a4f, URL: http://<IP_ADDRESS>:4873
Updated .npmrc: //<IP_ADDRESS>:4873/:_authToken="Nc9d92BSEnVSg6pOSyyCDSjAW3tJePoz6G43R/N8jL8="
registry=http://<IP_ADDRESS>:4873

Updated .yarnrc: registry "http://<IP_ADDRESS>:4873"

Running command: 'yarn changeset version --snapshot local' with options {"stdio":"ignore"}
Running command: 'yarn changeset publish --no-git-tag --snapshot --tag local' with options {"stdio":"ignore"}
Running command: 'docker build --no-cache --build-arg npmRegistryUrl=http://<IP_ADDRESS>:4873 --build-arg npmTag=local --tag api3/airnode-admin:local --file packages/airnode-admin/docker/Dockerfile packages/airnode-admin/docker'
Running command: 'docker build --no-cache --build-arg npmRegistryUrl=http://<IP_ADDRESS>:4873 --build-arg npmTag=local --tag api3/airnode-deployer:local --file packages/airnode-deployer/docker/Dockerfile packages/airnode-deployer/docker'
Running command: 'docker build --no-cache --build-arg npmRegistryUrl=http://<IP_ADDRESS>:4873 --build-arg npmTag=local --tag api3/airnode-client:local --file packages/airnode-node/docker/Dockerfile packages/airnode-node/docker'
Running command: 'docker stop airnode-npm-registry-154a2a4f'

That's odd, I can see this on my machine

But I see it missing in the CI :thinking:

You can get more info from here:

(In the settings, download log archive). From there I can see this failure:
2022-10-06T07:32:52.1081203Z (node:1073) UnhandledPromiseRejectionWarning: Error: Command failed: docker build --no-cache --build-arg npmRegistryUrl=http://<IP_ADDRESS>:4873 --build-arg npmTag=a2e7a03120ce31afe471faf3bbeba247f0b5fd87 --tag api3/airnode-admin-dev:a2e7a03120ce31afe471faf3bbeba247f0b5fd87 --file packages/airnode-admin/docker/Dockerfile packages/airnode-admin/docker
2022-10-06T07:32:52.1083323Z The command '/bin/sh -c npm set registry ${npmRegistryUrl} &&     yarn global add ${packageName}@${npmTag} &&     ln -s /usr/local/share/.config/yarn/global/node_modules/${packageName}/dist ${appDir} &&     adduser -h ${appDir} -s /bin/false -S -D -H ${name}' returned a non-zero code: 1
2022-10-06T07:32:52.1084250Z
2022-10-06T07:32:52.1084618Z     at checkExecSyncError (child_process.js:790:11)
2022-10-06T07:32:52.1085341Z     at execSync (child_process.js:863:15)
2022-10-06T07:32:52.1085875Z     at runCommand (/build/docker/scripts/utils.ts:7:18)
2022-10-06T07:32:52.1086791Z     at buildContainers (/build/docker/scripts/prepare-containers.ts:57:13)
2022-10-06T07:32:52.1087490Z     at /build/docker/scripts/prepare-containers.ts:71:3
2022-10-06T07:32:52.1088199Z     at Generator.next (<anonymous>)
2022-10-06T07:32:52.1088988Z     at fulfilled (/build/docker/scripts/prepare-containers.ts:11:58)
2022-10-06T07:32:52.1089822Z     at processTicksAndRejections (internal/process/task_queues.js:95:5)
2022-10-06T07:32:52.1090615Z (Use `node --trace-warnings ...` to show where the warning was created)
2022-10-06T07:32:52.1094409Z (node:1073) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 8)
2022-10-06T07:32:52.1096248Z (node:1073) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

You don't get the Docker build output (like what @amarthadan posted). I see the output on Mac OS, but not on Ubuntu.
The output @Siegrift posted is just the top-level failure; it's indicating a command failed to execute, but there's no indication of that command's output.
It's probably related to stdout vs stderr. It's not a big deal, just makes fault tracing harder.
It's not a biggie, just a nice to have for debugging.

Same issue for recent renovate bot PRs e.g. #1489 and #1496: see here and here, respectively. One problem is that this CI step, Build Docker containers, "passes" CI and only two steps later, in Push airnode-admin to Docker Hub, is there a CI failure.

I know what's going on... I could probably fix it myself quickly:
In https://github.com/api3dao/airnode/blob/a2e7a03120ce31afe471faf3bbeba247f0b5fd87/packages/airnode-examples/test/utils.ts:
export const runCommand = (command: string) => {
  logger.log(`Running command:\n${command}`);
  const result = spawnSync(command, {
    shell: true,
  });

  if (result.status !== 0 || result.error) {
    throw new Error(`Command failed with non-zero status code. Output:\n${result.stdout.toString()}`);
  }

  const stderr = result.stderr.toString();
  if (stderr) {
    cliPrint.warning(`Stderr output:\n${stderr}`);
  }

  const stdout = result.stdout.toString();
  if (stdout) {
    consoleLog(`Stdout output:\n${stdout}`);
  }
  return stdout;
};

If the command fails, the function throws and the output isn't printed.
We also only see the output once the command has finished. A better approach may be to print the outputs as they occurs, something like this example:
var spawn = require('child_process').spawn,
    ls    = spawn('ls', ['-lh', '/usr']);

ls.stdout.on('data', function (data) {
  console.log('stdout: ' + data.toString());
});

ls.stderr.on('data', function (data) {
  console.log('stderr: ' + data.toString());
});

ls.on('exit', function (code) {
  console.log('child process exited with code ' + code.toString());
});

Moved to done, since this is internal only change and was tested.


Bundle install

Love this idea, but shouldn't the bundle install command be run --without development test ?

This issues totally slipped by me. I mainly use this image for development & test so for me it makes sense. Perhaps there could be a way to tweak that via env variables or so.
Closing for now. Feel free to open again for any comment or PR.


Update test-infra: some fixes

Update vendor: knative/test-infra.

fix for retrying different GCP regions when e2e test failed due to stock out
Istio install from GKE Addon

/test pull-knative-eventing-sources-integration-tests

/assign @evankanderson

/lgtm
/approve


Cannot disable detach keys by setting detach-keys to an empty string ("")

Is this a BUG REPORT or FEATURE REQUEST? (leave only one on its own line)
/kind bug
Description
This feature cannot be disabled after setting detach_keys to an empty string ("").
See also:
#4208
Steps to reproduce the issue:
1.podman run --env TERM=$TERM --detach-keys "" -it --rm registry.fedoraproject.org/f31/fedora-toolbox:31 /bin/bash
or
podman run --env TERM=$TERM --detach-keys="" -it --rm registry.fedoraproject.org/f31/fedora-toolbox:31 /bin/bash
or
edit ~/.config/containers/libpod.conf: detach_keys = ""
2.After entering ctrl-q, bash cannot directly display the previous command. After pressing other keys (for example, "e"), ctrl-q and e will be entered into the terminal. After pressing ctrl-p + ctrl-q, it will detach from the container.
Describe the results you received:
This feature will be disabled.
Describe the results you expected:
Detach keys is still "ctrl-p, ctrl-q".
Additional information you deem important (e.g. issue happens only occasionally):
Output of podman version:
podman version 1.8.0

Output of podman info --debug:
debug:
  compiler: gc
  git commit: ""
  go version: go1.13.6
  podman version: 1.8.0
host:
  BuildahVersion: 1.13.1
  CgroupVersion: v2
  Conmon:
    package: conmon-2.0.10-2.fc31.x86_64
    path: /usr/bin/conmon
    version: 'conmon version 2.0.10, commit: 6b526d9888abb86b9e7de7dfdeec0da98ad32ee0'
  Distribution:
    distribution: fedora
    version: "31"
  IDMappings:
    gidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
    uidmap:
    - container_id: 0
      host_id: 1000
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
  MemFree: 361185280
  MemTotal:<PHONE_NUMBER>
  OCIRuntime:
    name: crun
    package: crun-0.12.1-1.fc31.x86_64
    path: /usr/bin/crun
    version: |-
      crun version 0.12.1
      commit: df5f2b2369b3d9f36d175e1183b26e5cee55dd0a
      spec: 1.0.0
      +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
  SwapFree:<PHONE_NUMBER>
  SwapTotal:<PHONE_NUMBER>
  arch: amd64
  cpus: 4
  eventlogger: journald
  hostname: xps
  kernel: 5.4.17-200.fc31.x86_64
  os: linux
  rootless: true
  slirp4netns:
    Executable: /usr/bin/slirp4netns
    Package: slirp4netns-0.4.0-20.1.dev.gitbbd6f25.fc31.x86_64
    Version: |-
      slirp4netns version 0.4.0-beta.3+dev
      commit: bbd6f25c70d5db2a1cd3bfb0416a8db99a75ed7e
  uptime: 4h 44m 21.6s (Approximately 0.17 days)
registries:
  search:
  - docker.io
  - registry.fedoraproject.org
  - registry.access.redhat.com
  - registry.centos.org
  - quay.io
store:
  ConfigFile: /var/home/junjie/.config/containers/storage.conf
  ContainerStore:
    number: 2
  GraphDriverName: overlay
  GraphOptions:
    overlay.mount_program:
      Executable: /usr/bin/fuse-overlayfs
      Package: fuse-overlayfs-0.7.5-2.fc31.x86_64
      Version: |-
        fusermount3 version: 3.6.2
        fuse-overlayfs: version 0.7.5
        FUSE library version 3.6.2
        using FUSE kernel interface version 7.29
  GraphRoot: /home/junjie/.local/share/containers/storage
  GraphStatus:
    Backing Filesystem: extfs
    Native Overlay Diff: "false"
    Supports d_type: "true"
    Using metacopy: "false"
  ImageStore:
    number: 8
  RunRoot: /run/user/1000
  VolumePath: /home/junjie/.local/share/containers/storage/volumes

Package info (e.g. output of rpm -q podman or apt list podman):
podman-1.8.0-2.fc31.x86_64

Additional environment details (AWS, VirtualBox, physical, etc.):
OS: Fedora Silverblue 31
[junjie@xps containers]$ rpm-ostree status
State: idle
AutomaticUpdates: disabled
Deployments:
● ostree://fedora:fedora/31/x86_64/silverblue
                   Version: 31.20200211.0 (2020-02-11T00:51:59Z)
                BaseCommit: 5401775ea020efd6ffc869ade0a0b695138a2d0603d098e59f0bd003009fdf43
              GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4
             LocalPackages: google-chrome-stable-80.0.3987.87-1.x86_64

  ostree://fedora:fedora/31/x86_64/silverblue
                   Version: 31.20200210.0 (2020-02-10T00:40:47Z)
                BaseCommit: 5d20cf79b4efde70a873d815015554f169f58085576aabcf4fe34c1ea54edf4e
              GPGSignature: Valid signature by 7D22D5867F2A4236474BF7B850CB390B3C3359C4
             LocalPackages: google-chrome-stable-80.0.3987.87-1.x86_64

After setting detach-keys to other keys (for example: "ctrl-g, ctrl-g"), the detach keys will become ctrl-g + ctrl-g. It cannot be turned off by setting it to an empty string.

I wonder if the OCI Runtimes set the detach keys if they are set to ""

This isn't the runtime, they don't have any interaction - this is all Podman


build empire monkey super patch classes  of courses high efficiency python x super 10

[ ] I've read the CONTRIBUTING guidelines

steps
problem
expectation
notes
sbt version: insert sbt version

this needs to be done because of bad people trying to harm other people /build empire monkey super patch classes  of courses high efficiency python x super 10


Fix compile with clang/llvm-c++

Build errors without the change.

@costinm: Adding do-not-merge/release-note-label-needed because the release note process has not been followed.

One of the following labels is required "release-note", "release-note-action-required", or "release-note-none".
Please see: https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#write-release-notes-if-needed.
Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@costinm: The following test failed, say /retest to rerun them all:

Test name
Commit
Details
Rerun command

prow/mixerclient-presubmit.sh
bcc987610890e6f9959ea08309a151f96797b2db
link
/test mixerclient-presubmit

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here.

script/check-style: line 26: /home/bootstrap/clang/bin/clang-format: No such file or directory
Can someone merge it (until prow presubmits get fixed) ?

I will do it with https://github.com/istio/mixerclient/pull/306


PG 13 is coming

This is the whole result of my first regression tests with PG13 beta2.

Well, it was short and informative, but I've changed it.

Thanks.


Unirest\Request\Body::Json() do not set the 'Content-Type' header to 'application/json' as the doc said

version: v3.0.3 install with composer
PHP: 5.6.21 with libcurl-7.19.7-46.el6.x86_64
In Unirest-PHP doc, I found below words in the JSON Requests (application/json)section:

Content-Type headers will be automatically set to application/json.

But with simple tests, I found the Content-Type header still application/x-www-form-urlencoded which is default when CURLOPT_POSTFIELDS is set to a string. Then, I dig the code and found no hints to auto set Content-Type header to 'application/json'.
So, was I miss or misunderstood something? Or, may be the doc is wrong?
Thanks!

+1

Is the problem resolved? I have the same problem with one of my post requests.

+1

+1

you can use : array('Content-Type'=> 'application/json') instead  array('Accept' => 'application/json')

Same problem here, I'm using v3.0.4. I didn't find where Unirest set automatically the header Content-type: application/json, I have to set manually to work.


Integration Test - Release - 2019/05/15 13:07:42

Auto create for integration test. IssueCommandFlow

@bharney-msft : Thanks for your contribution! The author, @v-caxian, has been notified to review your proposed change.