[SPARK-49611][SQL][FOLLOW-UP] Fix wrong results of collations() TVF

What changes were proposed in this pull request?
Fix of accent sensitive and case sensitive column results.
Why are the changes needed?
When initial PR was introduced, ICU collation listing ended up with different order of generating columns so results were wrong.
Does this PR introduce any user-facing change?
No, as spark 4.0 was not released yet.
How was this patch tested?
Existing test in CollationSuite.scala, which was wrong in the first place.
Was this patch authored or co-authored using generative AI tooling?
No.

@panbingkun for reference, this mistake slipped in

+1, LGTM. Merging to master.
Thank you, @mihailom-db and @panbingkun @dbatomic for review.


Second Q&A Session

Hi, will there be another Q&A Session to quickly answer some more (mostly organizational) questions?

Please ask your questions in the Slack Channel, or even here. No we won't have any further sessions.


List "stakeholders" and put PY in contact

Create a list of stakeholders, especially those from non-Greco-Roman epigraphic traditions, and put PY in contact to start drawing up longer list of desiderata.

Suggested approach to interviewing/interrogating stakeholders:

Show them IOSPE inscriptions and indices, and ask what fundamental differences they would need for their corpora. (NB: any field or feature can be turned off; what new features would need to be turned on for their domain?)
Ask to look at some inscription and index examples from their project, and discuss the differences with "London EpiDoc"
Explain the envisaged customization mechanism for EFES, and ask if they foresee any problems with that, or have any questions
Ask what non-epigraphic (non-text or non-TEI) materials or projects they would like their data to interface with (e.g. prosopography, geography, imagery, material culture, bibliography, vocabularies, encyclopedias, ecc ecc, but let them come up with these); if they can be concrete, all the better (Pelagios, SNAP, Wikipedia, EAGLE, Getty, ecc)
What parts of they project do they want users to be able to download, take away, work with?
...

I think we're at a point when any new conversations with stakeholders about EpiDoc desiderata would be impractical. Let's close this ticket now, incomplete as its outcomes may be.


[Iceberg] Handle missing snapshots in change timeline

This issue is related to Iceberg's snapshot expiry. Iceberg API allows expiry of any snapshot, even if it is not the oldest snapshot or even if the snapshot is part of a multi-snapshot transaction. A scan cannot be initiated for an expired snapshot.
OneTable replays changes on a target format. If a snapshot which is part of the timeline is expired, the replay cannot be performed. This case should be handled properly in OneTable. For e.g. this could result in termination of incremental sync?
Originally posted by @the-other-tim-brown in https://github.com/onetable-io/onetable/pull/129#discussion_r1375325454

Since 154 is merged, we can close this now. @ashvina  Please confirm if we can close this.

@ashvina can you confirm?


Spent process pr

this builds upon Confenum 9 and interrupt_test
-- removes unconfirmed as a field of TransactionMetadata in favour of ConfirmationStatus
-- refactored the transactions.rs record keeping methods into a new mod. this creates a smaller problem space for any balance-related bugs to hide in, and made it easier to
-- create a unit test for get_some_txid_from_highest_wallet_block method, which is also dynamic thus no longer a field on TMS
-- spend marking uses the same functional flow regardless of status case, rather than being a concern of update notes, it is handled inside 'found_spent_nullifier'
this sets groundwork for a few immediate next steps
-- consolidate spent and unconfirmed_spent fields of notes to a txid pointer, as discussed on the airport drive

have to address sporadic reorg failures

have to address sporadic reorg failures

documented and discussed


Memory leak with memory views and NPY_RELAXED_STRIDES_CHECKING

The following code will leak memory for every function call:
a = np.random.rand(10)[:, None]
def memory_leak():
    cdef double [:,::1] arr = a
    return

The a array has strides (8, 0) but is still considered contiguous by numpy because the axis is only length 1. So, changing a to np.ascontiguousarray(a) has no effect.
I am using python 3.7 and cython 0.29.12.

I think this might be a Numpy bug. Here's an alternative version that just uses the C API buffer interface (through Cython, for convenience) that shows the same issue
import numpy as np

from cpython.buffer cimport *

a = np.random.rand(10)[:, None]
b = np.random.rand(10)

def version_1():
    cdef Py_buffer buf
    PyObject_GetBuffer(a, &buf, PyBUF_STRIDED)
    PyBuffer_Release(&buf)

def version_2():
    cdef Py_buffer buf
    PyObject_GetBuffer(b, &buf, PyBUF_STRIDED)  # array "b" instead of "a"
    PyBuffer_Release(&buf)

Running version_1 in a loop shows the same behaviour as the memoryview version (a continuous increase in memory used). Running version_2 in a loop doesn't show a memory leak.
I'll close this as "third party" but feel free to tell me if I've done something wrong.


Automatic duck array testing - reductions

This is the first of a series of PRs to add a framework to make testing the integration of duck arrays as simple as possible. It uses hypothesis for increased coverage and maintainability.

[x] Tests added
[x] Passes pre-commit run --all-files
[ ] User visible changes (including notable bug fixes) are documented in whats-new.rst
[ ] New functions/methods are listed in api.rst

@shoyer: I asked about this in pytest-dev/pytest#8450, but it seems that we are on our own here. The recommendation was to use inheritance, but that currently breaks parametrize (see the pad tests in test_variable).
I wonder if using hypothesis would make this easier? It would probably require a bit more reading because I don't yet fully understand how to choose the properties but dynamic parametrization would not be necessary: we would pass strategies instead of creation functions and potentially find more bugs, at the cost of slightly longer test runs.

@Zac-HD, would you have any advice for something like this?

Looking at https://github.com/keewis/xarray/compare/duckarray-tests...duckarray-tests-hypothesis, for high-level feedback:

Overall it looks pretty good; though ping me again if/when it's a PR and I'll do line-level feedback on idiom issues
A more general test would generate the shapes, and the axes to reduce over - reducing a 1D array over the first dimension is going to miss things
You use @st.composite when the .map() method and a lambda would suffice (though the perf gain is small enough that this is mostly a readability issue)
I don't see the point of Label, and we advise against mixing "a strategy or a value".  We break this rule a few times for backwards-compatibility in our Numpy support, but wouldn't write such an API these days.

And I'm always delighted to see people using Hypothesis to test libraries that I use and love 🥰🤩

First of all, the main concept is to provide a way to generic and cheap way to check the compatibility of any duckarray (and any nested duckarray) with xarray's interface. At the moment I'm considering hypothesis (hence the separate branch, which I will merge into this one should it become more promising) because I was thinking that it might be easier to go through with the whole "have a function accepting some callbacks and marks generate the tests" if instead of possibly parametrized callbacks I used hypothesis' strategies. There are still some potential issues left (most importantly I'm trying to find a generic way to compute the expected values or expected failures), and in general I'm not sure this is the best way to implement the duckarray testing, but it is the easiest way I can come up with.
Thanks for hints 2 and 3, I'm still not quite used to the concepts of hypothesis. As for 4, xarray has parameters which are intended for use in label-based indexing (e.g. with sel), so I'm trying to find a way to mark those different from other types of parameters (like position-based indexers). I guess I could use separate strategy for those instead of the marker object?

@shoyer, I finally remembered the link to pandas' extension array test suite, which divides the tests into groups and provides base classes for each of them. It then uses fixtures to parametrize those tests, but I think we can use hypothesis strategies instead.
This will most probably be a little bit easier to implement and maintain, and allow much more control, although parametrize marks are still stripped so the tests will be a bit more verbose.

ping @shoyer, I'm mostly done with cleaning up the code.
@Zac-HD, could I ask for another review? I think I applied most of your suggestions but I'm sure I missed something.

is there a way to separate sizes into dims and shape without using draw? I tried dims, shape = sizes.map(lambda s: tuple(zip(*s))), but since the map strategy is not iterable the final unpacking fails.

You've just got to use draw for this.

I'd prefer the verbose repr of st.builds() when debugging strategies, but if I know the strategy is correct and understand what it generates I'd probably prefer the smaller repr of @st.composite.

That's a good way of thinking about it :slightly_smiling_face:

The pint tests pass so all that's left is to figure out how to fix the sparse tests.
sparse seems to have different dtype casting behavior (it casts e.g. a mean of float16 to float64, while numpy stays at float16), so I'll need to figure out how to work around that. There's also a TypeError, which I'll have to investigate.

The pint tests pass so all that's left is to figure out how to fix the sparse tests.

Can we xfail these new tests and merge for now? As long as tests/test_sparse.py still passes, there are no issues, correct?

Can we xfail these new tests and merge for now? As long as tests/test_sparse.py still passes, there are no issues, correct?

Yeah we now have another array type to consider testing, so I'm also in favour of merging now with passing tests for pint, and un-xfailing tests for other array types (i.e. sparse) in a later PR.

sparse seems to have different dtype casting behavior (it casts e.g. a mean of float16 to float64, while numpy stays at float16), so I'll need to figure out how to work around that.

Sparse doesn't support float16
The remaining local failure is https://github.com/pydata/xarray/issues/6817 (perhaps we should run numpy tests too ;) )

Haha the remaining error locally is a bug:

the remaining failures for pint are #6822.
I also wonder whether we should have a separate job for hypothesis: this makes CI run quite a bit longer (about 70s on my machine just for sparse and pint reduce tests, which are a small part of the API)

I also wonder whether we should have a separate job for hypothesis: this makes CI run quite a bit longer (about 70s on my machine just for sparse and pint reduce tests, which are a small part of the API)

Sounds good to me!

I started with reduce because that seemed to be the easiest to check, but I guess I was wrong? In any case, checking that the wrapped data is indeed the expected should be very easy to add (not this PR, though, that has stalled long enough).
The idea is to do something like pandas's ExtensionArray test suite that exposes a set of base classes that can be inherited from. So to test duck array support in a downstream library, you'd inherit from the appropriate classes and override create (which returns a strategy for the tested array) and check_* to check properties of the expected result (I think that's what you're asking for in 4).
It definitely doesn't feel very polished at the moment, but hopefully we can figure out a way to fix that (and then we can also hopefully figure out a good way to document this).

See https://github.com/pydata/xarray/issues/6894 for general discussion of the general plans

Q: Shouldn't the base classes live in xarray.testing rather than xarray.tests?

Q: Shouldn't the base classes live in xarray.testing rather than xarray.tests?

Another Q on a similar note: Are we planning to eventually publicly expose the (awesome btw) strategies that you've built here @keewis ? They could be very useful for testing other parts of xarray.
We could also make this PR much more incremental by splitting it into 2, or even 3 separate PRs:

strategies, to live somewhere like xarray.testing.strategies and eventually be made public
duck array base classes to inherit from, to live somewhere like xarray.testing.duckarrays
specific tests for pint/sparse, to live in our own test suite for now but moved out eventually.

The advantage of that would be that (1) & (2) can move forwards without requiring all the tests in (3) to pass.

I also agree that both the strategies as well as the base classes should eventually live in xarray.testing, but I'd probably keep them in xarray.tests for now (just so we can experiment a bit more).

So I may actually have overexcitedly already jumped the gun and made a PR to move strategies to xarray.testing.strategies last night :sweat_smile: #6908 We might just want to wait to merge this before merging that though anyway.

Note, however, that it's probably best not to separate 2 and 3 because there might be issues with the base class design we don't notice without trying to actually use them.

Good point.

We might just want to wait to merge this before merging that though anyway.

I actually think it should be the other way around: if we can get the strategies from #6908 to shrink well, we might be able to fix the occasional test timeouts here (which should be one of the final issues we have before we can merge this).

if we can get the strategies from https://github.com/pydata/xarray/pull/6908 to shrink well

I think they already do shrink well. Each of them has corresponding unit tests, and none of those tests fail due to hypothesis timeouts.


Shift + Click to change color format is broken

On Fedora 30 - Google Chrome Version 79.0.3945.130 (Official Build) (64-bit), when I Shift + Click the color in Styles tab, the color format changes but it reverts back when the list item with class domChanges has an attribute change/toggle.
https://masteringdevtools.com/lessons/editing

Works fine on Firefox though.

That's really interesting. Not a bug I can fix on my end! I'll experiment a bit more with Chrome on Linux and see if I can add a note to the course about it! Thanks.


IOS real device run failed,Operation not permitted

I tried running it separately on the iOS simulator and the real iOS device. The simulator had no issues, but the real device reported an error saying :
kotlinx.io.IOException: Failed to open /private/var/mobile/Containers/Shared/AppGroup/A360F614-B4FB-4359-926D-E5ABC17BB1F2/File Provider Storage/_xxx.pdf with Operation not permitted

Did I miss setting any permissions? Below is the code I ran:
  @OptIn(ExperimentalForeignApi::class, BetaInteropApi::class)
    actual fun getPdfPageCount(path: String): Int =
        kotlin.runCatching {
            val pdfFile = FileUtils.fromString(path, isDirectory = false) ?: return 0
            val data = pdfFile.openInputStream()?.readByteArray() ?: return 0
            val nsData = data.usePinned {
                NSData.create(bytes = it.addressOf(0), length = data.size.toULong())
            }
            val pdfDocument = PDFDocument(nsData)
            return pdfDocument.pageCount.toInt()
        }.onFailure {
            it.printStackTrace()
        }.getOrDefault(0)

Where are you obtaining that path?

I use this function get the path,because I want to save the file info in local database, and when I need it I convert it to IPlatformFile
    actual fun getAbsolutePath(file: IPlatformFile): String {
        return file.getAbsolutePath()
    }

But where are you getting this file from? What's the source?

But where are you getting this file from? What's the source?

this,i get from it
        val filePicker = rememberFilePickerLauncher(
            type = PickerType.File(listOf("pdf")),
            mode = PickerMode.Single,
            title = "Select a PDF file",
        ) { pdfFile ->
            scope.launch {
                withContext(Dispatchers.IO) {
                    pdfFile?.toKmpFile()?.let {
                        viewModel.onAction(
                            UploadFormAction.CreateUploadTask(
                                UploadEntity(
                                    userId = user?.userId ?: 0,
                                    type = selectFileType,
                                    skipSameNameFolder = skipSameNameFolder,
                                    libraryId = selectLibrary?.libraryId ?: 0,
                                    pathUrl = FileUtil.getAbsolutePath(it),
                                    title = it.getName()
                                )
                            )
                        )
                        navigator.dispose(UploadScreen())
                        navigator.push(UploadScreen())
                    }
                }
            }
        }

        val directoryPicker = rememberDirectoryPickerLauncher(
            title = "Select a Directory"
        ) { directory ->
            scope.launch {
                withContext(Dispatchers.IO) {
                    directory?.toKmpFile()?.let {
                        viewModel.onAction(
                            UploadFormAction.CreateUploadTask(
                                UploadEntity(
                                    title = it.getName(),
                                    userId = user?.userId ?: 0,
                                    type = selectFileType,
                                    skipSameNameFolder = skipSameNameFolder,
                                    libraryId = selectLibrary?.libraryId ?: 0,
                                    pathUrl = FileUtil.getAbsolutePath(it),
                                )
                            )
                        )
                        navigator.dispose(UploadScreen())
                        navigator.push(UploadScreen())
                    }
                }
            }
        }

Can you try 0.6.3 once it's published?

Can you try 0.6.3 once it's published?

Thinks! of course i will try it ,if it fix, i will tell you

Can you try 0.6.3 once it's published?

it work！thank you for your help！


HTML Templating un-indents template helpers

If you type something like:

  {{#each posts}}

  {{/each}}

If you type more brackets inside the each template helper, it gets un-indented and you end up with

  {{#each posts}}
  {{post.title}}
  {{/each}}

instead of

  {{#each posts}}
    {{post.title}}
  {{/each}}

The main issue is that the plain HTML syntax mode doesn't know that {{#each}} blocks should add an extra level of indent, so anything that triggers re-indentation will jump the cursor back one tab stop.  As a secondary bug, Brackets treats } as a character to trigger re-indentation even in languages where it shouldn't, like HTML.
The secondary bug should be fixed by PR #9387.  But after that, you'll still see unwanted un-indenting when typing closing HTML tags.  To fix that, we'd need full syntax mode support for templating languages so that Brackets understands what the correct indent level should be.


Syntax definition missing end-of-line non-terminal

name ENDP ;;
;; ::= (;[\x00-\xFF^\x10]*)?\x10

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

ID: 934be64e-c10c-f8f5-dfb5-c46d3ffac290
Version Independent ID: 838b56cf-1809-dd5f-f93a-cd5dbf840a14
Content: ENDP
Content Source: docs/assembler/masm/endp.md
Product: visual-cpp
Technology: cpp-masm
GitHub Login: @corob-msft
Microsoft Alias: corob

Incorporated into Incomplete Syntax definition issue.


[Bug]: The Partners GraphQL API responded unsuccessfully with errors

Please confirm that you have:

[X] Searched existing issues to see if your issue is a duplicate. (If you’ve found a duplicate issue, feel free to add additional information in a comment on it.)
[X] Reproduced the issue in the latest CLI version.

In which of these areas are you experiencing a problem?
App, Extension
Expected behavior
Normal running of command npm run dev. It will build the app and run in the dev site
Actual behavior
Got an error while the app is configuring
GraphQLClientError:
The Partners GraphQL API responded unsuccessfully with errors:
[
  {
    "message": "Unexpected system error",
    "extensions": {
      "code": "500"
    }
  }
]

Request ID: a45a26b2-80a3-4809-810b-6e668000d6f1

Verbose output
The Partners GraphQL API responded unsuccessfully with errors:                                                                                │
│                                                                                │
│  [                                                                                │
│    {                                                                                │
│      "message": "Unexpected system error",                                                                                │
│      "extensions": {                                                                                │
│        "code": "500"                                                                                │
│      }                                                                                │
│    }                                                                                │
│  ]                                                                                │
│                                                                                │
│  Request ID: a45a26b2-80a3-4809-810b-6e668000d6f1                                                                                │
│                                                                                │
│                                                                                │
│  To investigate the issue, examine this stack trace:                                                                                │
│    at makeRequest (graphql-request/src/index.ts:441)                                                                                │
│      throw new ClientError(                                                                                │
│    at processTicksAndRejections (node:internal/process/task_queues:95)                                                                             │
│    at async debugLogResponseInfo (@shopify/cli-kit/src/private/node/api.ts:27)                                                                     │
│      response = await request                                                                                │
│    at (ChorleyDigital/Speedwave/node_modules/@shopify/cli-kit/dist/public/node/api/graphql.js:22)                                                  │
│    at (ChorleyDigital/Speedwave/node_modules/@shopify/cli-kit/dist/public/node/metadata.js:84)

Reproduction steps

Run command npm run dev

Operating System
Windows 11
Shopify CLI version (check your project's package.json if you're not sure)
@shopify/cli": "^3.49.6"
Shell
No response
Node version (run node -v if you're not sure)
v21.6.1
What language and version are you using in your application?
No response

same issue

same issue

Confirmed on our end that the issue has now been fixed. Sorry for the inconvenience.

Hi, im still facing the same issue with the latest cli

Hello, I've been getting a 504 on Partners GraphQL API for the last 4-6 hours, when I run shopify app dev. I'm attaching the logs from shopify app dev --verbose.
     ╭─ error ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │                                                                                │ │                                                                                │ │  The Partners GraphQL API responded unsuccessfully with the HTTP status 504 and errors:                                          │ │                                                                                │ │  {}                                                                                │ │                                                                                │ │  Request ID: 6fb0762b-6937-473c-afb1-2d946eaa3cef-1723040821                                                                     │ │                                                                                │ │                                                                                │
shopify-partners-api-error.txt


next-api-version: Redis API PascalCases for 'Message' property name

Tracking bug.
Redis swagger defines 'Message' property in PascalCase because the server api was implemented incorrectly. But fixing it in current api-version would be a breaking change.
This issue should be fixed as part of the next Microsoft.Cache/redis api-version, whenever that happens.
/cc @vishrutshah

@TimLovellSmith - is this issue fixed?

@kirthik AFAICR, no, we still don't have any newer api-version which returns message in camelCase.

@kirthik Update: we actually fixed this in our 2017-10-01 api version.


Support for FG2-era Forge

Adds support for Forge versions which previously required ForgeGradle 2.
Should be fully functional for building production-ready jars as well as running in a development environment (I only tested IntelliJ but there's no IDE-specific code).
This was developed mostly late November completely independently from #63. Afaict notable differences are:

Significantly smaller diff; as few changes to FG3 code paths as possible (within reason)
No FG code; instead of implementing the old patch algorithm, the old patches are converted to the modern format (which is surprisingly similar) when they are extracted (similarly, old srg files are converted to tsrg when extracted)
Supports the TerminalConsoleAppender (by bumping the log4j version and merging the old "helper" classes, which forge depends on, into the forge jar), this may cause issues if mods depend on other parts of log4j that were changed between 2.0-beta9 and release (seems unlikely), but makes for MUCH better console output
Access transformers are applied directly to the official-mapped jar (remapping the transformer on the fly) instead of converting the whole thing to srg and back
The intermediary mappings are generated by stitch instead of manually traversing all classes
Passes the forge/simple integration test case for 1.8.9 and 1.12.2

I had originally bundled pack200 directly into loom but later switched that out for the external plugin as in #63. I was unable to figure out a nice way to get it into the integration test though (classloader shenanigans where the plugin couldn't see our interface; and just adding it to the test classpath doesn't add it to the nested gradle jvm). The best I could come up with is adding a "runtimeOnly" dependency to the main project but is not ideal if the goal was to not have a dependency on that pack200 implementation (though the java classpath exception applies to it, so this shouldn't be an issue license-wise).
There's two extra commits before the main one, each of which fixes a bug I ran into (see their commit messages for details).
Somewhat complex example project: https://github.com/Sk1erLLC/Patcher/tree/tmp/archloom
(needs archloom published to mavenLocal; features a coremod, tweakers, mixins, 1.8.9 and 1.12.2)

This should probably be updated to target dev/0.11.0, as that's where the development is happening, but it might be a bit too much work with the refactors done to both Loom's core/upstream code as well as the Forge-specific parts...

This should probably be updated to target dev/0.11.0, as that's where the development is happening, but it might be a bit too much work with the refactors done to both Loom's core/upstream code as well as the Forge-specific parts...

as well as the Forge-specific parts...

exactly the reason I split fg3+ and fg2 classes, makes it so changes to one don't cascade into the other


Fix styling issues post 2.0 release

Addresses #3088 - the themes that are now selected in the styles export modal shall be exported as styles.
Resolves #3083  - the 2nd point when multiple themes are enabled, then the styles don't show in Figma
Description

When we select the themes in the export modal to be exported as styles, the expectation now would be to export those themes regardless of their active/inactive status.
When multiple themes are enabled, especially core/global, figma ceased to display the corresponding style token applied. This PR should address that

Type of change

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update
[ ] None of the above

How to test this
1st Issue:

Create some themes in the plugin.
Keep them inactive.
Go to Export Styles&Variables, choose the themes you wish to be exported as styles
They should be exported irrespective of them being inactive

2nd Issue:

Create some themes, along with a core/global theme
Apply light/dark theme, theme switching should work fine, along with the correct styles being applied(and displayed on Figma) without core theme enabled
As soon you apply core theme, the theme switching should work fine between light/dark or any other themes, along with the pertinent styles being showed in Figma

Screenshots or video (if necessary):

these fixes work for me upon testing

Thank you so much! Just tested it and it works for me again now. Great work!


State?

The state parameter of build_chart does not appear to do anything (state always has the value of State::default) - and none of the example show it's use (_state in every single example)
Does that parameter work?

The state parameter of build_chart does not appear to do anything (state always has the value of State::default) - and none of the example show it's use (_state in every single example)
Does that parameter work?

It should work, but its usage is limited.
The widget tree will have the ownership of the state,  you cannot update the state directly, unless you are handling UI events.


added shira li to people.yml filile

It seems like you've changed the Gemfile as well; can you undo that change so that you only change the people.yml file?

I committed and pushed again, do I need to submit another pull request? Also, the Gemfile changed without me knowing (I didn't go in and change it purposefully), how do I prevent that from happening again?


bpf: nat: limit EgressGW redirect check to bpf_host

The relevant EgressGW code in snat_v4_needs_masquerade() is already constrained to IS_BPF_HOST. Make the redirect check consistent.

/test


Update to latest GGShield

Codecov Report

Merging #533 (5f3023b) into main (8c02e2a) will decrease coverage by 0.05%.
The diff coverage is 90.56%.

:exclamation: Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more.
@@            Coverage Diff             @@
##             main     #533      +/-   ##
==========================================
- Coverage   93.87%   93.83%   -0.05%
==========================================
  Files          83       85       +2
  Lines        3839     3890      +51
==========================================
+ Hits         3604     3650      +46
- Misses        235      240       +5

Flag
Coverage Δ

unittests
93.83% <90.56%> (-0.05%)
:arrow_down:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

ggshield/core/config/config.py
94.87% <ø> (ø)

ggshield/cmd/honeytoken/create.py
87.80% <87.80%> (ø)

ggshield/__init__.py
100.00% <100.00%> (ø)

ggshield/cmd/honeytoken/__init__.py
100.00% <100.00%> (ø)

ggshield/cmd/main.py
91.17% <100.00%> (+0.13%)
:arrow_up:

ggshield/secret/output/schemas.py
94.64% <100.00%> (+0.09%)
:arrow_up:

...shield/secret/output/secret_json_output_handler.py
91.13% <100.00%> (+0.11%)
:arrow_up:


Update css-relative-colors.json to reflect evolving support

Relative color syntax should support currentcolor and system color keywords in its syntax. Every current browser with an implementation of relative color syntax does not yet do so.
It's important enough that it was added to Interop 2024 as the "Relative Color Syntax" focus area, with these tests: https://wpt.fyi/results/css/css-color?label=master&label=experimental&aligned&view=interop&q=label%3Ainterop-2024-relative-color
Support for currentcolor and system color keywords is shipping in Safari 18 beta.

• Added support for currentColor and system color keywords to Relative Color Syntax. (100981965)

https://developer.apple.com/documentation/safari-release-notes/safari-18-release-notes

@Fyrd Hi! Can someone look into this PR?
Chrome's lack of support is shown by the intent to implement here: https://groups.google.com/a/chromium.org/g/blink-dev/c/pgmTJgcZPlI

Looks good, thanks!


TypeError: 'NoneType' object is not callable

I moved your convolutional layer into another model for training, but the following problems occurred:
Traceback (most recent call last):
File "main_reid.py", line 203, in
fire.Fire()
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/fire/core.py", line 138, in Fire
component_trace = _Fire(component, args, parsed_flag_args, context, name)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/fire/core.py", line 468, in _Fire
target=component.name)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/fire/core.py", line 672, in _CallAndUpdateTrace
component = fn(*varargs, **kwargs)
File "main_reid.py", line 164, in train
reid_trainer.train(epoch, trainloader)
File "/media/misstian/tnq/er/trainers/trainer.py", line 34, in train
self._forward()
File "/media/misstian/tnq/er/trainers/trainer.py", line 91, in _forward
score, feat = self.model(self.data)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in call
result = self.forward(*input, **kwargs)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/parallel/data_parallel.py", line 150, in forward
return self.module(*inputs[0], **kwargs[0])
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in call
result = self.forward(*input, **kwargs)
File "/media/misstian/tnq/er/models/networks.py", line 196, in forward
x = self.backbone(x)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in call
result = self.forward(*input, **kwargs)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/container.py", line 92, in forward
input = module(input)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in call
result = self.forward(*input, **kwargs)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/container.py", line 92, in forward
input = module(input)
File "/home/misstian/anaconda3/envs/reid/lib/python3.6/site-packages/torch/nn/modules/module.py", line 547, in call
result = self.forward(*input, **kwargs)
File "/media/misstian/tnq/er/models/resnet.py", line 142, in forward
out = self.conv2(out)
TypeError: 'NoneType' object is not callable
Do you have good suggestions?

If you did not try already, you can use as a starting point our PyConv2d from https://github.com/iduta/pyconv/blob/master/models/pyconvresnet.py
You can find there an example.


Create scripts to automate the process of setting video paths and metadata directories

I have improved the automation process of video path and metadata directories by using python  OS library. Refer to this piece of code in main.py
# Loop through each video path and run the detection process using the Engine class
for video_path, metadata_dir in zip(video_paths, metadata_dirs):
    # Creates the metadata directory if it doesn't exist
    metadata_dir = os.path.join(os.getcwd(), metadata_dir)
    os.makedirs(metadata_dir, exist_ok=True)
    # Creates an instance of the Engine class and runs it
    engine = Engine(video_path, metadata_dir)
    engine.run()


Viewing a merged PDF on iOS, the filled-in fields are not visible

When using $support='native' and merging field values, the output pdf file will have fields that are not visible on iOS using the built-in pdf handlers. The fields are also not visible in mupdf viewer on Windows.  If using a third party viewer on iOS (like Acrobat), then the filled-in field values look okay. But in a typical scenario, where the pdf is attached to an email message or viewed in Safari, the pdf will not preview correctly.
If using $support=’pdftk' on the same source pdf and same fill-in field values, the resulting pdf renders fine under iOS and mupdf viewer.
Viewed merged pdf file on iOS 13.3.1, iOS 9.3.5; Windows 10 version 1903 with MuPDF 1.14.0
Attached are the template pdf, merge output using native, and merged output using pdftk modes.
The templatePDF file was prepared with pdftk executable.

The calling PHP code looks like this [for $support='native']
$pdf = new FPDM($this->templatePDF);
$pdf->Load($flds, false);
//        $pdf->Plays('pdftk');
$pdf->Fix();
$pdf->Merge();
$pdf->Output('I', $fName);
gc-native.pdf
gc-template.pdf
gc-pdftk.pdf

+1

@leek it seems like this might be somewhat related to your pull request.


Will you release the code for applying the  t2i-adapter  to real image？Thanks！

Hi @diyiiyiii, I will update the code of real image editing with T2I-Adapter later.

is real image editing with t2iadapter code available for SDXL?


Fix/update readme.rst

Update readme.rst from .md

Thanks! Anyway it won't go live before I push a new version on Pypi.

:) no worries, good job!


Can you update executable version

As the title..
Can you update executable version with the new updates?

Sure, check here: https://github.com/Dylan-Zheng/Rise-of-Kingdoms-Bot/releases/tag/v<IP_ADDRESS>421_beta

Perfect thanks

Buddy can you update again? 😁


Add image logo to navbar

Hi! To add an image to the navbar your code must look like this:

and in your css you have to put the following properties:
 .logo-image{
    width: 46px;
    height: 46px;
    border-radius: 50%;
    overflow: hidden;
    margin-top: -6px;
}

Regards,
Dragos

Thank you :)

Thanks. It works very well

hey, can you help me a bit? I actually wanted to insert an image and just after that, i want to insert a text, but when i am doing it, the text gets shifted further towards the centre

Check your text style if it is using text-align: center. If it is then used img {float: left;} in your style to float your text to left or right.

image is not displaying

I got the image to display, but the size is way off. Now to fix that! Thanks!

This is the best I've found so far. It helps me 80 percent. Because I want set a circle logo in Bootstrap Extension Offcanvas menu. Any one set circle logo in offcanvas menu ?

Can someone help me with resizing it since it is too big...

tank you!!!!!!, very much!!!

Can someone help me with resizing it since it is too big...

width: "X"px;
height: "X"px;
change those values

Can someone help me with resizing it since it is too big...

width: 46px;
height: 46px;
border-radius: 50%;
overflow: hidden;
margin-top: -6px;
tweak the values

heres a correction in css section , it should be-
.logo-image img{
width: 46px;
height: 46px;
border-radius: 50%;
overflow: hidden;
margin-top: -6px;
}

heres a correction in css section , it should be-
.logo-image img{
width: 46px;
height: 46px;
border-radius: 50%;
overflow: hidden;
margin-top: -6px;
}

Not working

Thank you!

I have tried using the above html and css properties but the input group that is supposed to be by the side of the image logo keeps overlapping it. Pls how do I get to fix it.

Thanks a lot!

Thank you.

This was great thanks for the post Ive been trying to get my logo sized right for days and this did the trick!!!

thank you!

image is not displaying

Try
.logo-image{
width: 46px;
height: 46px;
border-radius: 50%;
overflow: visible;
margin-top: -6px;
}

Thank you !

nice!

THANK YOU

Thank you!


tame_mob not working outside player context

tame_mob always gets the current player, even if the first parameter is given.
There is a null pointer in:
String player = environment.getEnv(CommandHelperEnvironment.class).GetPlayer().getName();

Fixed by #253


External seed for pseudo-random number generator

I'm using faker-cxx to generate random data for databases. To test the library and make the generation more deterministic in general, it would be great to be able to provide an explicit seed for the pseudo-random number generator.
Currently, the seed is set with std::random_device:
https://github.com/cieslarmichal/faker-cxx/blob/1f76b3d7743cb2ddb4bd09fd19925767d56ef946/include/faker-cxx/helper.h#L41-L42
https://github.com/cieslarmichal/faker-cxx/blob/1f76b3d7743cb2ddb4bd09fd19925767d56ef946/include/faker-cxx/number.h#L37
Are you interested in adding this functionality? I'm happy to implement it.

Implementation-wise, I'm considering two alternatives. Let me know if I'm missing something—I'm still new to the code. :)

Providing a seed as parameter of the existing API functions. For example: faker::internet::email(seed=42). The disadvantage is that this would change the signature of all API functions and add an optional parameter. The advantage is that the rest of the code can stay the same (e.g., how RNGs are instantiated).
Using a single thread_local std::mt19937 instead of a static local for every function that needs a random engine, and adding a function to change its seed. This doesn't change the signature of any existing functions.

Hello, very good idea, let's implement it :)
Second solution seems to be better :)
I will assign you to this issue


Team contacts should be a supported placeholder

Thanks to @vivienlacourba for the alert.
--
[Update @tripu 31/Aug]
This will be automatically fixed when #22 is merged and w3c/w3c-api#28 is fixed.

[x] #22.
[ ] w3c/w3c-api#28.

Team contacts now worky https://github.com/w3c/w3c-api/issues/32 (this was not related to #28)


Refacto to add a card component

Pull Request
What does this PR do?

Addition of a Card component which will be needed in other PRs.

Note: This was initially added to this PR: #526
But since we can't merge it until a few weeks, and we will need it for other PRs (mostly for the About us page), it's better to extract it and put it in another PR.
PR checklist
Please check if your PR fulfills the following requirements:

[x] Have you read the contributing guidelines?
[x] Have you made sure that the title is accurate and descriptive of the changes?

Thank you so much for contributing to Meilisearch!

bors merge


[Autocomplete] Android-specific: In form, can't issue enter keydown event

[x] The issue is present in the latest release.
[x] I have searched the issues of this repository and believe that this is not a duplicate.

Current Behavior 😯
When I type text into Autocomplete TextField, normally I would press Enter key to submit into it. On Android, keybord has Next button which prevents me from pressing enter and submitting text (submit on blur is disabled).
Expected Behavior 🤔
Since chrome and HTML has no option to change button on keyboard, I suggest adding custom event to Autocomplete to submit typed text
Your Environment 🌎

`npx @mui/envinfo`
  Chrome 95
  System:
    OS: macOS 11.4
  Binaries:
    Node: 16.10.0 - /usr/local/bin/node
    Yarn: 1.22.11 - /usr/local/bin/yarn
    npm: 7.24.0 - /usr/local/bin/npm
  Browsers:
    Chrome: 95.0.4638.54
    Edge: Not Found
    Firefox: 90.0
    Safari: 14.1.1
  npmPackages:
    @emotion/react: ^11.4.1 => 11.4.1
    @emotion/styled: ^11.3.0 => 11.3.0
    @mui/core:  5.0.0-alpha.47
    @mui/lab: ^5.0.0-alpha.49 => 5.0.0-alpha.49
    @mui/material: ^5.0.0 => 5.0.0
    @mui/private-theming:  5.0.1
    @mui/styled-engine:  5.0.1
    @mui/system:  5.0.2
    @mui/types:  7.0.0
    @mui/utils:  5.0.1
    @types/react:  17.0.21
    react: ^17.0.2 => 17.0.2
    react-dom: ^17.0.2 => 17.0.2

I upvote this topic, this behavior on mobile makes the use of autocomplete buggy.

@VityaSchel As a workaround, you can set the TextField component to be multiline, it works "<TextField multiline rows={1} ../>"

@MS-elug Thanks for the workaround!
But this should be labelled a bug, since it's an android (mobile?) specific issue, on desktop the behavior is different and does not move to the next field when pressing Enter.
@mui:  ^5.11.12,

Is this fixed?

Any progress on this issue?


Create a sitemap for FreeBMD1

Document page structure of FreeBMD1. What pages are there? How to they relate to each other?
Example: https://drive.google.com/open?id=1bBV1SbHz0vXKYCAoZRITh5mfHUaeU3pO
Example: https://drive.google.com/open?id=17H32y8SQ2mfzBA7bqE4ZneWujUBMRBMe

Sitemap: https://drive.google.com/open?id=1dZdqSQijx_XazPkGJi7bGVK_vy4m1ieCBVd6nkqWvtM

This looks fine to me if it's just a sitemap recording the current pages on BMD1.
I will also create an actual /sitemap.txt or /sitemap.xml file which bots can crawl, for SEO purposes, and submit it to Google (for both BMD1 & 2).


Fix typos in comment

Coverage remained the same at 67.971% when pulling 26ccf2a3169681c91d0d42e36c71bd49a80987a5 on InDieTasten:patch-1 into 0b096d7d5543a62d9324b827f969b6fb617074c2 on sourcelair:master.

Wow I was having a bad day then :sweat_smile: Thanks @InDieTasten!

@Tyriar No worries! As long as it's only in comments 😄


[ZEPPELIN-4893]. Upgrade to spark 3.0.0

What is this PR for?
Simple PR to upgrade to official released spark 3.0.0.
What type of PR is it?
[ Improvement ]
Todos

[ ] - Task

What is the Jira issue?

https://issues.apache.org/jira/browse/ZEPPELIN-4893

How should this be tested?

CI pass

Screenshots (if appropriate)
Questions:

Does the licenses files need update? No
Is there breaking changes for older versions? No
Does this needs documentation? No

LGTM


"cargo install diesel_cli" fails with a generic overflow on latest nightly

I'm running cargo install diesel_cli on a fairly fresh installation of Arch Linux, and cargo is spitting out an error message partway through the process:
$ cargo install diesel_cli
    Updating registry `https://github.com/rust-lang/crates.io-index`
  Installing diesel_cli v1.0.0
   Compiling [[a bunch of dependency crates]]
   Compiling diesel v1.0.0
error[E0275]: overflow evaluating the requirement `<&_ as insertable::Insertable<_>>::Values`
  |
  = help: consider adding a `#![recursion_limit="128"]` attribute to your crate
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `std::option::Option<&_>`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&std::option::Option<_>`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `std::option::Option<&std::option::Option<_>>`
  = note: required because of the requirements on the impl of `insertable::Insertable<_>` for `&std::option::Option<std::option::Option<_>>`
[[more lines of increasingly deeply nested Options]]

It seems to compile and install fine on stable, though, so it shouldn't be a significant issue unless it's also affecting other users.
What makes this particularly odd is that compiling Diesel as a project dependency works just fine for me on nightly; it's only cargo install diesel_cli that chokes on the diesel crate. Is anyone else seeing this behavior?
Versions

Rust: 1.24.0-nightly
Diesel: 1.0.0
Operating System: Linux (Arch)

It would be very useful to mention here which version of rust solves the issue.
From the link to comments, it seems that the problem was solved by this commit, but am unable to install diesel_cli using following versions:

nightly-x86_64-apple-darwin unchanged - rustc 1.26.0-nightly (80785a547 2018-03-30)
stable-x86_64-apple-darwin unchanged - rustc 1.25.0 (84203cac6 2018-03-25)

My build was failing but not due to the reasons mentioned in this issue. I was getting following error:
error: linking with `cc` failed: exit code: 1
 |
  = note: "cc" "-m64" "-L" ...
  ...
  = note: ld: library not found for -lmysqlclient

And I was able to resolve it by using:
cargo install diesel_cli --no-default-features --features postgres
Thanks to the comment


Use ☗ and ☖

KIF 形式以外では ▲ △ ではなく ☗ ☖ を使うように改善する。
いずれも Unicode に追加されて久しいので文字化け等は問題にならないと思われる。

Codecov Report
Base: 72.40% // Head: 72.40% // No change to project coverage :thumbsup:

Coverage data is based on head (8847890) compared to base (e869ff9).
Patch coverage: 0.00% of modified lines in pull request are covered.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #247   +/-   ##
=======================================
  Coverage   72.40%   72.40%
=======================================
  Files          60       60
  Lines        3461     3461
  Branches      200      200
=======================================
  Hits         2506     2506
  Misses        795      795
  Partials      160      160

Impacted Files
Coverage Δ

src/components/primitive/BoardView.vue
47.46% <ø> (ø)

src/shogi/move.ts
81.39% <0.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Update key generation for adding handlers

Previous strategy was failing with newer swift versions, this is the same issue as #11.
[Edit] It seems that Dictionary.keys is somehow not atomic. This is not true, see below [/Edit]
I have not checked the diffs to get to the root cause, however this now passes tests and I added
a performance test just to check that it does not add any overhead.

Update:
I quickly saw that my first solution - be8ee36  was too simplistic. It does not take into account removing handlers.
be8ee36 implementation (failure case)
let receiver = Receiver<Int>.make()
let d1 = receiver.listen(h1) // 1
let d2 = receiver.listen(h2) // 2
d1.dispose() // 3
d3 = receiver.listen(h3) // 4

// handler mutations

// 1 - adding h1
_key = _handlers.count // _key = 0
_handlers[_key] = handle
// _handlers = [ 0: h1 ]

// 2 - adding h2
_key = _handlers.count // _key = 1
_handlers[_key] = handle
// _handlers = [ 0: h1 , 1: h2 ]

// 3 - removing h1
_handlers[_key] = nil // _key = 0 as obtained from d1
// _handlers = [ 1: h2 ]

// 4 - adding h3
_key = _handlers.count // _key = 1
_handlers[_key] = handle
// _handlers = [ 1: h3 ] ❌
// expected [ 1: h2, 2: h3 ] or anything that does not overwrite h2

It turns out this is essentially the same reason for the failure of the original implementation (i.e generating a key that already exists), it was just less obvious and I falsely assumed was some kind of race issue (which I thought was odd since it was done inside an atomic apply)
Original implementation: (failure case)
let receiver = Receiver<Int>.make()
let d1 = receiver.listen(h1) // 1
let d2 = receiver.listen(h2) // 2
d1.dispose() // 3
d3 = receiver.listen(h3) // 4

// handler mutations

// 1 - adding h1
_key = (_handlers.keys.map { $0.hashValue }.max() ?? -1) + 1
// _key == ([] ->(hashValue)-> [] -(max)-> nil ?? -1) + 1 == 0
_handlers[_key] = handle
// _handlers = [ 0: h1 ]

// 2 - adding h2 // e.g 0.hashValue == 100
_key = (_handlers.keys.map { $0.hashValue }.max() ?? -1) + 1
// _key == ([0] ->(hashValue)-> [100] -(max)-> 100) + 1 == 101
_handlers[_key] = handle
// _handlers = [ 0: h1 , 101: h2 ]

// 3 - removing h1 - unlike `be8ee36` this does not have any affect on correctness
_handlers[_key] = nil // _key = 0 as obtained from d1
// _handlers = [ 101: h2 ]

// 4 - adding h3 //  e.g 101.hashValue == 30
_key = (_handlers.keys.map { $0.hashValue }.max() ?? -1) + 1
// [0,101] ->(hashValue)-> [100, 33] -(max)-> 100
// _key == ([0,101] ->(hashValue)-> [100,33] -(max)-> 100) + 1 == 101
_handlers[_key] = handle
// _handlers = [ 101: h3 ] ❌
// expected [ 101: h2, `X`: h3 ] for some X != 101

The new Implementation simply uses Int.random and double checks that there is no value associated with that key.
_key = Int.random(in: Int.min...Int.max)
while _handlers[_key] != nil {
    _key = Int.random(in: Int.min...Int.max)
}
_handlers[_key] = handle

As mentioned in this comment in #11 by @kevincador (also apologies for stepping on your toes a bit here, I should have reached out before proposing a solution)...
_key = (_handlers.keys.max() ?? -1) + 1 solves this. The reason I didn't just dupe this is because I managed to get myself in an infinite loop with this implementation, but can't be sure if this was a locking bug introduced by being attached in the debugger... @kevincador Have you come across this at all? Further after running a performance test on it, keys.max() is an O(n) operation, so I ended up sticking with Int.random and a collision check which should be quite rare for n <<< UInt.max 😊. If that became an issue, you would also have to think about the type of key by which to key the _handlers and move towards something like UDID. Or perhaps have a seat of available/ not available keys to trade time generating one for some space to contain them, which is almost certainly in the realms of premature optimisation.
Thanks for reading 😊

Nice @Daniel1of1 !
I have an app in prod since Dec. using the solution I proposed quite extensively. But to be honest my implementation was more a guess found by trial and error. You seem to have nailed it way better.
Note: I didn't investigate it yet but iOS 13 will introduce a new framework (https://developer.apple.com/documentation/combine). I don't know if it will replace Receiver (I'd like to have @RuiAAPeres input on this one 😇).

Oh wow, thanks for all this work guys! I need to see if this is working as intended. @kevincador are you using Receiver in production?

Yes, I'm using Receiver in production since 1.0 of Rippple (https://itunes.apple.com/us/app/rippple-tv-movie-comments/id1309894528) launched in early 2018.

@kevincador regarding Combine, it doesn't support iOS 12. It's slightly more complex than Receiver as well: it has more functionality.

@Daniel1of1 I am checking how ReactiveSwift does it, and I think it would provide a more robust solution: https://github.com/ReactiveCocoa/ReactiveSwift/blob/master/Sources/Bag.swift#L45 What do you think?

@RuiAAPeres This seems perfectly suitable, I can essentially just lift it from there. And I'll update accordingly. Do you have a preference on whether to wrap the key in a Token type as in ReactiveSwift or not?

I am ok with either.

@RuiAAPeres done


Create ERC721-With-Balance strategy

This creates the erc721-with-balance strategy.
It allows a strategy on ERC721 token balances with a minimum balance. The strategy returns 0 VP if the account has less than the minimum balance or 1 VP if the account has greater than or equal to the minimum balance.
This will allow token gated (ERC721) communities and protocols to have egalitarian voting power.

Hello @willhblackburn Thanks for the PR but erc20-with-balance works with ERC721 too, sorry for the confusion, we are actually trying to rename erc20-with-balance to with-balance to avoid confusion #114

Hey @ChaituVR,
Thanks, I see that history now.
I didn't like combining these strategies for two reasons (we are currently using the erc20-with-balance strategy). First, separating the strategies allow for removing decimals altogether for the erc721 strategy. Secondly, the current erc20-with-balance strategy is confusing logically. It requests a minimum balance option, but only returns voting power if the balance is greater than this minimum balance.

First, separating the strategies allow for removing decimals altogether for the erc721 strategy.
you can pass decimals in options to erc20-with-balance right? 🤔

but only returns voting power if the balance is greater than this minimum balance.

@willhblackburn minBalance option is optional and if not passed it will check balance is more than 0 or not

@ChaituVR

you can pass decimals in options to erc20-with-balance right? 🤔

Right, my point is you can remove decimals altogether in the erc721 strategy, thus reducing confusion.

minBalance option is optional and if not passed it will check balance is more than 0 or not

That's correct, but the logic is still unintuitive. The minBalance is a greater than check even when passed. If you specify a minimum balance for voting power, the logic should be greater than or equal to. A separate ERC721 strategy allows for resolving to an integer and a proper greater than or equal to check.
It's not that it cannot be done in one strategy; it is that separating them provides a more intuitive strategy for those trying to use Snapshot. But I understand if this is not accepted.

Right, my point is you can remove decimals altogether in the erc721 strategy, thus reducing confusion.

For confusion, yes, but we want to keep the strategies as optimal as possible. maybe we should make the decimal option optional in erc20-with-balance

That's correct, but the logic is still unintuitive. The minBalance is greater than check even when passed. If you specify a minimum balance for voting power, the logic should be greater than or equal to. A separate ERC721 strategy allows for resolving to an integer and a proper greater than or equal to check.

True let's wait for @bonustrack  to see what he think we can do

Closing this for now, please reopen this if needed

@ChaituVR - we are waiting for @bonustrack to comment, right?

@willhblackburn Maybe I think I can try to answer, there is no way to modify greater than to greater than or equal to on the existing strategy.  because many spaces depend on that and new change can be confusing them, and greater than  just works fine for all of them. Can I know your requirement for having greater than or equal to?

@ChaituVR - it took hours to find a strategy that worked and have it setup correctly due to the fact that the strategy uses greater than unintuitively and the strategy is centered around fungible tokens w/ decimals. Using this new strategy would help new communities by fixing both of those issues.

@willhblackburn we are actually trying to find better ways to rename a few strategies and use new strategies without affecting old proposals, we can merge this but I am thinking if this will add up to that trouble list 😅 ya Fabien is the better person to take comment on this, I will ask Fabien to reply to this :)

@willhblackburn We don't want to update the existing strategy to have greater than or equal to (it can affect existing spaces)
and we can't have a new strategy erc721-with-balance (duplicate) Can you suggest any other idea?  Closing this, we can continue the discussion here https://github.com/snapshot-labs/snapshot-strategies/issues/107 if needed


Anonymised database dump for development version

[ ] commit the dump
[ ] add info to the development section of the documentation

Because of the recent modifications in #7 (language code in message keys) the dump also needs a little refactoring to work perfectly with the fresh webapp:
UPDATE te_flag SET id = replace(id, '-F-', '-F-hu.'), information = replace(information, 'flag.', 'flag.hu.');


Increase test pipeline timeout

Nightly builds have started exceeding 60m, which is the default timeout.
https://dev.azure.com/azure-sdk/internal/_build?definitionId=234

FWIW, I had done this already but a recent change EngSys made removed it (seems to have regenerated the file). @chidozieononiwu, can you make sure any customizations to tests.yml aren't overwritten again? We've added a lot of Key Vault tests which take a while for various reasons.


Long press not showing all events

For some devices like the HM-PB-2-WM55-2, pressing it longer sends the following events in pyhomematic:

PRESS_LONG
PRESS_CONT (n times as long as it is held)
PRESS_LONG_RELEASE

See my blog here https://phenx.de/events-von-homematic-und-homematic-ip-tastern/ for a more detailled list.
In hahomematic only the following event is thrown (checked in developer tools):

press_long

The other two are missing. They are also missing in the device dropdown:

Comparison to HmIp device:
This seems not to be intentional since HmIp devices correctly show them:

custom_component/hahomematic version (if applicable):
latest
Home Assistant version (if applicable):
latest
CCU version:
CCU3 with Raspberrymatic
Expected behavior
All three events have their uses (e.g. dimming for the press_cont), so please add them back.

These events are different. Should be fixed with next release.

Fixed wit 0.21.1. Please retest.

LGTM


Added os.getcwd() to example script to make it more OS agnostic. Also…

… added strikethrough formatting and note regarding broken link in readme file.

No problem :)


Add keybindings to Edit Function Signature

Is your feature request related to a problem? Please describe.
The Edit Function Signature dialog is very finnicky and difficult to navigate exclusively by keyboard.
Describe the solution you'd like
Making it more like the Structure Editor window would be a huge help. That is, allowing F2 to edit individual data types and function names.
Adding keybindings to move individual parameters up and down would be super helpful as well, as well as a way to add extra parameters -- making it like Structure Editor, where one can simply edit an empty item at the end to append would be the most familiar approach.
Describe alternatives you've considered
Currently, the dialog is editable by mouse/keyboard, but doing a large number of edits is difficult.

Bind F2 to rename for all the things!

Is that a suggestion for the developers, or are you saying there's a way I can do that?

Is that a suggestion for the developers, or are you saying there's a way I can do that?

Suggestion.

Can I also add that Shift+F10 should be the universal key combination to bring up the right click menu.


Sheet upload widget only allows single file

Prior to this update it was possible to select multiple files in the upload file dialogue of the "Replace Current Sample Sheets with ISA-Tab" window. Currently only one file can be selected.
This seems due to changes in bd3fec4a52d24b5d716c2207a1a4183853b02604. The new argument allow_multiple_selected is not being properly handled by Django i. e. replaced with the HTML "multiple" attribute.

Replacing allow_multiple_selected with multiple="" in the browser rescues this phenotype.
System Information

Ubuntu 22.04
Firefox 113

This was changed according to the Django changelog guide to prevent the entire site from crashing. I'll see how to enable this. Meanwhile, the workaround is to upload sample sheets as a zip archive.

Fixed.


Bitmap manipulation increasing the file size considerably.

I am using Jimp for a project and this involves manipulating the bitmap by simple bitwise operations. I use a PNG image as a source, and manipulate its bitmap by changing the lower 2-bits every byte, without ever adding any more bytes. What this leads to is that my input is around 86KB but the same bitmap, when written to an image (using the write() method), is coming out to be about 235KB. Is there any way I can avoid this? I would like to have access to same the bitmap which I was manipulating instead of having a new one created (of a much larger size). Are there any options to preserve the original compression, and image size?
Update: I went back and tried reading the same image, and then just writing it back without any manipulation and I am still noticing the size bloat.
This is the function I am using in my workflow:
function test(){
	Jimp.read("in.png", function (err, image) {
	    if (err) throw err;
        this.write("out.png");
    });
}

Update 2: It seems the original image had a bit-depth of 8 but the output image has a bit-depth of 32, which explains the bloating. Any way to stop this from happening?

I am experiencing this problem too, have you found the way to fix?

@hipstersmoothie

here is one of my sample with size 8.21KB , i run code like :
var image = await Jimp.read(file); image.write(newPath + 'test2.' + image.getExtension(), function (err, res) { 	console.log(err, res); });
then i get a png with size 21.8KB,

beautify my code , ~~
var image = await Jimp.read(file);
image.write(newPath + 'test2.' + image.getExtension(), function (err, res) { console.log(err, res); });

The png options werent getting passed correctly so I've opened #437. Once merged the following code will allow you to get smaller files.
const fs = require('fs');
const Jimp = require('jimp');

test();

async function test() {
    const image = await Jimp.read('./exampleImages/panda.png');

    await image
      .deflateStrategy(0)
      .filterType(Jimp.PNG_FILTER_NONE)
      .colorType(0)
      .writeAsync('test.png');

    const orig = fs.statSync('./exampleImages/panda.png');
    const result = fs.statSync('test.png');

    console.log(`${orig.size / 1000.0}mb`, `${result.size / 1000.0}mb`);
}

Output:
8.413mb 8.19mb

Note: colorType 0 makes it greyscale. This works for this image but maybe not other. Play around with the functions listed here

any update to fix this issue ?

converting the image to png will make it bigger unless you use the png options. have you tried my above code @mojodev

converting the image to png will make it bigger unless you use the png options. have you tried my above code @mojodev

how about jpeg ? when I write image to buffer , it increasing the file size 168kb > 800kb ? how can fix ?

I'm running into the same issue when reading in an image from Base64-encoded data and writing it back out without any manipulation. Doing so results in a file twice the size of the original.
const jimp = require('jimp')
const fs = require('fs')
const rawData = fs.readFileSync('/tmp/1.bin', 'utf-8');
const image = await jimp.read(Buffer.from(rawData, 'base64');
const newBuffer = await image.getBufferAsync(jimp.AUTO);

console.log(rawData.length); // 17196
console.log(newBuffer.getString('base64'); // 35060

same issue - no manipulation at all but file size doubles

any update to fix this issue ?

Any updates for this issue?

Any updates ?

waiting for updates.. 🙂

Any update?


Fixed project so that $(DefineConstants)are propagated correctly

Pull Request Template
Description
Fixed project so that $(DefineConstants) are propagated correctly when '$(DelaySign)' == 'true'
Type of change
Please delete options that are not relevant.

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)

Closing issues
I didn't open a specific issue.

/azp run

Not sure why the tests are failing there as they passed here and were not changed in any way

@fuocor thanks for your contributions to Azure Cosmos DB


bash prompt_script.sh

No such file or directory: 'log/confidence/rte_ent_deberta_base.json'

This could be solved by mkdir confidence in the EntST/ folder.

It worked when I added "/log/confidence". However, I ran into another issue:
usage: python prompt_cst.py [-h] [--domain DOMAIN] [--train-model TRAIN_MODEL] [--train-size TRAIN_SIZE] [--ft-mode FT_MODE] [--exp-id EXP_ID] [--eval-mode EVAL_MODE] [--model-type-str MODEL_TYPE_STR]
python prompt_cst.py: error: argument --train-model: expected one argument

Could you try deleting line 49 --train-mode $train_mode \ from the prompt_script.sh file?

I still get the same error:
[2023-10-26 19:45:45,464] [INFO] [real_accelerator.py:110:get_accelerator] Setting ds_accelerator to cuda (auto detect)
usage: python prompt_cst.py [-h] [--domain DOMAIN] [--train-model TRAIN_MODEL]
[--train-size TRAIN_SIZE] [--ft-mode FT_MODE]
[--exp-id EXP_ID] [--eval-mode EVAL_MODE]
[--model-type-str MODEL_TYPE_STR]
python prompt_cst.py: error: argument --train-model: expected one argument
Thank you for your support in advance.

And I deleted both --train-mode $train_mode \ and --train-model $train_model, I get a completely different error:
[2023-10-26 19:52:06,774] [INFO] [real_accelerator.py:110:get_accelerator] Setting ds_accelerator to cuda (auto detect)
Traceback (most recent call last):
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/utils/_errors.py", line 269, in hf_raise_for_status
response.raise_for_status()
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/requests/models.py", line 1021, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://huggingface.co/model_file/deberta-large-tok.pt/resolve/main/tokenizer_config.json
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/transformers/utils/hub.py", line 417, in cached_file
resolved_file = hf_hub_download(
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 118, in _inner_fn
return fn(*args, **kwargs)
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1360, in hf_hub_download
raise head_call_error
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1233, in hf_hub_download
metadata = get_hf_file_metadata(
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/utils/_validators.py", line 118, in _inner_fn
return fn(*args, **kwargs)
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/file_download.py", line 1622, in get_hf_file_metadata
hf_raise_for_status(r)
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/huggingface_hub/utils/_errors.py", line 310, in hf_raise_for_status
raise RepositoryNotFoundError(message, response) from e
huggingface_hub.utils._errors.RepositoryNotFoundError: 401 Client Error. (Request ID: Root=1-653a44d8-54236c962a969459193d87fa;b52aac6b-0b47-4906-94f4-c439a2133402)
Repository Not Found for url: https://huggingface.co/model_file/deberta-large-tok.pt/resolve/main/tokenizer_config.json.
Please make sure you specified the correct repo_id and repo_type.
If you are trying to access a private or gated repo, make sure you are authenticated.
Invalid username or password.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/yssuh/EntST/prompt_cst.py", line 251, in
pseudo_label_learning(args.exp_id)
File "/home/yssuh/EntST/prompt_cst.py", line 113, in pseudo_label_learning
tok = AutoTokenizer.from_pretrained(
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 652, in from_pretrained
tokenizer_config = get_tokenizer_config(pretrained_model_name_or_path, **kwargs)
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/transformers/models/auto/tokenization_auto.py", line 496, in get_tokenizer_config
resolved_config_file = cached_file(
File "/home/yssuh/anaconda3/envs/kollava/lib/python3.10/site-packages/transformers/utils/hub.py", line 433, in cached_file
raise EnvironmentError(
OSError: model_file/deberta-large-tok.pt is not a local folder and is not a valid model identifier listed on 'https://huggingface.co/models'
If this is a private repository, make sure to pass a token having permission to this repo with use_auth_token or log in with huggingface-cli login and pass use_auth_token=True.

Hi, I think this might because of your torch installation. Please check with torch.cuda.is_available()

torch.cuda.is_available() returns True. I believe torch installation is properly done on my end. Could it be something else?

Sorry for the delayed response. What is the version of your pytorch?

It's 2.0.1.

Thanks, let me test pytorch 2 and get back to you!


How to use with a VLP-16 lidar

Hi, Thank you for the great work.
I have a VLP-16 lidar and I want to use it for activity recognition.
Could you give me some suggestions to use your code?
Any help is much appreciated!

Hi, this project is only for point cloud processing but not point cloud collection. If you want to use the model for your own data, the first step is to set up your own dataset and train the model on that dataset. You can also choose to train the model previously with MSRAction (the dataset used in this project), and use the trained model to do recognition on your own data. But whether the result is good is unpredictable as the data is different.

Hi, thank you for your reply.
Due to the limited computation power. I'm wondering if it is possible that you could have colab implementation of your work?
Thank you!

Hi, processing dynamic point cloud is with a high computational complexity, I'm afraid you are not able to implement the project on Colab.

Hi, thank you for your reply.
I am using Colab Pro+. Is it possible to run your project in this environment?


chore: have lerna verify commits & tags

Wait for the Release Bot to be able to actually do signed commits itself.

Bors merge bot cheat sheet
We are using bors-ng to automate merging of our pull requests. The following table provides a summary of commands that are available to reviewers (members of this repository with push access) and delegates (in case of bors delegate+ or bors delegate=[list]).

Syntax
Description

bors merge
Run the test suite and push to master if it passes. Short for "reviewed: looks good."

bors merge-
Cancel an r+, r=, merge, or merge=

bors try
Run the test suite without pushing to master.

bors try-
Cancel a try

bors delegate+
Allow the pull request author to merge their changes.

bors delegate=[list]
Allow the listed users to r+ this pull request's changes.

bors retry
Run the previous command a second time.

This is a short collection of opinionated commands. For a full list of the commands read the bors reference.

Opened this concerning the Release Bot, but bot commit verification is done differently by Github. So this shouldn't be needed.


Dioxus example Build Failed

Steps to Reproduce:

Download repo to ~/sp folder
cd ~/sp/examples/apps/screenpipe-app-dioxus
install tailwind
install rust, cargo, dx cli
dx serve --hot-reload --platform desktop

dx serve --hot-reload --platform desktop

⚙ Compiling path+file:///Users/davidmcgregor/sp/screenpipe-server#0.1.0                                                                                error[E0061]: this function takes 4 arguments but 3 arguments were supplied
--> src/main.rs:146:5
|
146 |     ResourceMonitor::new(memory_threshold, runtime_threshold, false)
|     ^^^^^^^^^^^^^^^^^^^^--------------------------------------------
|                         ||                 |
|                         ||                 unexpected argument of type u64
|                         |unexpected argument of type f64
|                         three arguments of type Duration, u32, and tokio::sync::mpsc::Sender<RestartSignal> are missing
|
note: associated function defined here
--> /Users/davidmcgregor/sp/screenpipe-server/src/resource_monitor.rs:23:12
|
23  |     pub fn new(
|            ^^^
help: did you mean
|
146 |     ResourceMonitor::new(false, /* Duration /, / u32 /, / tokio::sync::mpsc::Sender */)
|                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

error[E0061]: this function takes 7 arguments but 8 arguments were supplied
--> src/main.rs:159:25
|
159 |         if let Err(e) = screenpipe_server::start_continuous_recording(
|                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
164 |             control_rx,
|             ---------- unexpected argument of type tokio::sync::mpsc::Receiver<_>
|
note: expected Arc<SegQueue<(AudioDevice, DeviceControl)>>, found Receiver<(AudioDevice, DeviceControl)>
--> src/main.rs:166:13
|
166 |             audio_devices_control_receiver,
|             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: expected struct Arc<crossbeam_queue::seg_queue::SegQueue<(AudioDevice, DeviceControl)>>
found struct tokio::sync::mpsc::Receiver<(AudioDevice, DeviceControl)>
note: function defined here
--> /Users/davidmcgregor/sp/screenpipe-server/src/core.rs:43:14
|
43  | pub async fn start_continuous_recording(
|              ^^^^^^^^^^^^^^^^^^^^^^^^^^
help: remove the extra argument
|
163 ~             audio_chunk_duration,
164 |             vision_control,
165 ~             /* Arc<crossbeam_queue::seg_queue::SegQueue<(AudioDevice, DeviceControl)>> */,
|
error[E0308]: mismatched types
--> src/main.rs:192:13
|
188 |         let server = Server::new(
|                      ----------- arguments to this function are incorrect
...
192 |             audio_sender_for_server.as_ref().clone(), // Clone the inner Sender
|             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected Arc<SegQueue<(AudioDevice, DeviceControl)>>, found Sender<(AudioDevice, DeviceControl)>
|
= note: expected struct Arc<crossbeam_queue::seg_queue::SegQueue<(AudioDevice, DeviceControl)>>
found struct tokio::sync::mpsc::Sender<(AudioDevice, DeviceControl)>
note: associated function defined here
--> /Users/davidmcgregor/sp/screenpipe-server/src/server.rs:458:12
|
458 |     pub fn new(
|            ^^^
Some errors have detailed explanations: E0061, E0308.
For more information about an error, try rustc --explain E0061.
error: could not compile screenpipe-app-dioxus (bin "screenpipe-app-dioxus") due to 3 previous errors
❌ Build failed.                                                                                Error: 🚫 Serving project failed:
Caused by:
Build failed

thanks for reporting! @DmacMcgreg
the dioxus app is still a WIP, i could remove it from the files or would love a contribution to make it work
i'd recommend starting from the CLI if you want
try to build the CLI and run it

if you want to contribute to the dioxus app I'd recommend just starting new dioxus app and running the built CLI from withing the dioxus setup code using tokio Command something like this:
use tokio::process::Command;

let output = Command::new("screenpipe")
        .output().await.unwrap();

Oh i see! Thanks for the response. I was actually trying to get "the" Desktop app running.
I'm guessing this is not the one then?
Is there any instructions on building and running that one?

@DmacMcgreg hey you can try to build it from there https://github.com/louis030195/screen-pipe/blob/main/.github/workflows/release-app.yml
otherwise DM me can send you a free trial


CollectionExists method throw an exception when collection not exist

Version 3.1.4 from nuget

it was concurrent access issue.


Update to 0.1.2

Checklist

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

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

Requires r-sjstats[version='>=0.17.6'] via https://github.com/conda-forge/r-sjstats-feedstock/pull/11


page_should_contain_text and page_should_not_contain_text do not call _is_text_present

I haven't tried these KWs yet, but from examination of their source code I don't believe they work. They do this:

if text not in self.log_source(loglevel)

and this, respectively

if text not in self.log_source(loglevel)

instead of using a call to the private _is_text_present method to check for text present in the given element.
I'm going to fix both of these and submit a pull request referencing this issue.

I see how this works now, it its rather obscure manner. "log_source" is returning the "page" source so the ifs in the above examples will work. I still think its confusing that the private _is_text_present method is defined but never used. Should I make the "fix" for this to be simply removing it?
Thanks,
Martin

Actually it is used by core functionality, in _waiting.py. If you have better solutions you are more then welcome to contribute

Closing because of no activity


wishlist page made dynamic

Description

-> wishlist page now fetches data from the backend by passing the userId from the session.
-> items added to the wishlist are reflected on the wishlist page of the user.
-> modified get products to accomodate the related wishlist by userId in database, if the wishlist has an entry for the product, then the heart id filled with red and appropriate alert is displayed, this is on client side, previously this error was displayed after the DB query hence reducing the number of DB queries.
-> removed hard coded data and modified the card component on the wishlist page to synchronize with the product details.
-> abstracted the constructionModal to an more general Flash alert modal which takes a logo title and description as props, this can now be used across the website with appropriate inputs.
-> modified the context provider to accomodate the naimg convention

Related Issues

Closes #938

Screenshots / videos (if applicable)

https://github.com/user-attachments/assets/4d1dbe86-0726-4eb0-aa26-65dc6db6022f

@mdazfar2 @mastan the changes that I made have been mentioned above, please consider a level 3


Memory usage watermark

Watermark of memory usage

deploy 2 pods which use 3.5G and 2G memory

node use 6.4G
3. get the memory usage of two pods

5. set watermark of memory to 5G
6. pod with 3.5G memory has been evicted

@chenkaiyue can you do a rebase to remove the merged commit?

@chenkaiyue can you do a rebase to remove the merged commit?

ok


Further refactoring of Razor tooling project system

There's a lot of code changes here

Remove IProjectSnapshotManger interface completely
Push IDocumentSnapshot and IProjectSnapshot down to MS.ANC.Razor.ProjectEngineHost
Split out ILegacyDocumentSnapshot and ILegacyProjectSnapshot to serve the needs of the legacy editor.
Prune IDocumentSnapshot and IProjectSnapshot and hide implementation details, such as Configuration, ProjectWorkspaceState and GetProjectEngine().
Remove ComputedStateTracker and stop weakly caching RazorCodeDocument on DocumentState.
Introduce a variation of AsyncLazy from Roslyn. (A key difference between this and the VS AsyncLazy is that it doesn't have a JTF dependency.)
Remove tricky version logic from ProjectState.
Clean up ProjectState and DocumentState API.

In my professional opinion, we can consider the integration tests to have passed. The one failing test, HtmlCodeActionsTests_RemoveTag_WithCSharpContent, is known to be flaky at times.


wireguard

Are you open to adding support for wireguard? It's much more performant with mullvad and I'd love for someone to maintain this 😸

I'm certainly open to it. It's been in the back of my mind for a while now. I'll look at it later today and see how much work it'll take.

Are you open to adding support for wireguard? It's much more performant with mullvad and I'd love for someone to maintain this 😸

I have to say, having used linuxserver.io/wireguard for quiet some time now (with mullvad). I did not experience any difference in performance at all.

Are you open to adding support for wireguard? It's much more performant with mullvad and I'd love for someone to maintain this 😸

I have to say, having used linuxserver.io/wireguard for quiet some time now (with mullvad). I did not experience any difference in performance at all.

I agree. I've used that image before, and I'm quite satisfied with it. If I were to build something, it would essentially be the same thing.

Are you open to adding support for wireguard? It's much more performant with mullvad and I'd love for someone to maintain this 😸

I have to say, having used linuxserver.io/wireguard for quiet some time now (with mullvad). I did not experience any difference in performance at all.

I agree. I've used that image before, and I'm quite satisfied with it. If I were to build something, it would essentially be the same thing.

I have to say, having used linuxserver.io/wireguard for quiet some time now (with mullvad). I did not experience any difference in performance at all.

I agree. I've used that image before, and I'm quite satisfied with it. If I were to build something, it would essentially be the same thing.

The advantage to your container supporting wireguard would be not having to spin up a separate container for the proxy.

I have to say, having used linuxserver.io/wireguard for quiet some time now (with mullvad). I did not experience any difference in performance at all.

I agree. I've used that image before, and I'm quite satisfied with it. If I were to build something, it would essentially be the same thing.

The advantage to your container supporting wireguard would be not having to spin up a separate container for the proxy.

I don't have any plans to do this. Looking at the Linuxserver guys' image, it's quite complex, and not something I'm comfortable doing today.


Add support for event hub output and environment variables

This PR resolves two issues I had when I tried to use the visualizer on my function app:

My function app uses Event Hub outputs
My function.json uses environment variables e.g. "path": "%IngestionEventHubName%"

Hey @paulbatum - awesome :)
I'm going to pull this, then I may make a small change later once I have time to test:  I think it only needs ["eventHub", "path"] as it's doing indexOf matching to to pair them up Line 56, funcwalk.js


[uss_qualifier] NET0260-a performance check for querying flights in an area from a SP

Ensures that the multiple queries to a SP for requesting flights in an area match the required response times.
We have several queries done to that endpoint during the tests already, so this simply extends our aggregate checks.
Observers and service_providers defined in environment.yaml (and their respecive Python classes) now have a uss_base_urls array parameters that we use to map queries to USS'es. This is required as (to the best of my understanding) we need to be told which urls will be registered for an SP at the DSS.
Note this also includes a little utility for displaying information about a report.

Note: not sure if we want to keep the small utility for exploring a report's content? It was helpful to me to learn a bit about how the classes are structured and expect it to help a bit more if we have more complex aggregated checks, but I can also remove it.

Before a review, could you ensure the CI passes?
I see a failure in the log, which is unfortunately not caught by the CI, c.f. #162
Thanks!

Before a review, could you ensure the CI passes? I see a failure in the log, which is unfortunately not caught by the CI, c.f. #162 Thanks!

Looks like the failure was unrelated. Rebased and PR still green and ready for review.

Additionally, looking at the CI logs something looks wrong. I think it's because of the uss_base_urls having only the hostname and not the rest of the path.
For v22a there is only 1 participant and only the /flights call being evaluated:
2023-08-22 05:28:45.802 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:122 - SUCCESS for "ASTM NetRID nominal behavior" scenario
2023-08-22 05:28:46.229 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:104 - Running "ASTM F3411-22a NetRID aggregate checks" scenario...
2023-08-22 05:28:46.229 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: participants -> {'http://host.docker.internal:8081': 'uss2'}
2023-08-22 05:28:46.229 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: nb_queries -> 276
2023-08-22 05:28:46.230 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: uss2/display_data -> skipped check: no relevant queries
2023-08-22 05:28:46.232 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: uss2/flights -> percentiles on 37 relevant queries: 95th: 0.034843299999999994; 99th: 0.060277460000000005
2023-08-22 05:28:46.232 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:122 - SUCCESS for "ASTM F3411-22a NetRID aggregate checks" scenario

For v19 nothing is evaluated:
2023-08-22 05:27:15.854 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:122 - SUCCESS for "ASTM NetRID nominal behavior" scenario
2023-08-22 05:27:16.286 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:104 - Running "ASTM F3411-19 NetRID aggregate checks" scenario...
2023-08-22 05:27:16.287 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: participants -> {'http://host.docker.internal:8071': 'uss2'}
2023-08-22 05:27:16.287 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: nb_queries -> 390
2023-08-22 05:27:16.289 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: uss2/display_data -> skipped check: no relevant queries
2023-08-22 05:27:16.290 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:263 - Note: uss2/flights -> skipped check: no relevant queries
2023-08-22 05:27:16.290 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:122 - SUCCESS for "ASTM F3411-19 NetRID aggregate checks" scenario

Additionally, looking at the CI logs something looks wrong. I think it's because of the uss_base_urls having only the hostname and not the rest of the path.

Indeed, something is off here.
Though we match URLS by prefix for mapping them to participants (via query.request.url.startswith(base_url)) so even if we only have the hostname it should still work.

Fixed a bug I introduced in aggregate_checks.py's constructor.
We now have, for v19:
2023-08-25 14:39:49.132 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: participants_by_base_url -> {'http://v19.ridsp.uss2.localutm/mock/ridsp': 'uss2', 'http://v19.ridsp.uss2.localutm/ridsp/injection': 'uss2', 'http://v19.riddp.uss3.localutm/riddp/observation': 'uss3'}
2023-08-25 14:39:49.133 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss2/display_data -> skipped check: no relevant queries
2023-08-25 14:39:49.135 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss3/display_data -> percentiles on 68 relevant queries (62 different URLs, 66 initial queries, 2 subsequent queries): init 95th: 0.11976845000000001; init 99th: 0.12929327; subsequent 95th: 0.0223759; subsequent 99th: 0.023277580000000003
2023-08-25 14:39:49.137 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss2/flights -> percentiles on 58 relevant queries: 95th: 0.05983205; 99th: 0.06097860000000001
2023-08-25 14:39:49.138 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss3/flights -> skipped check: no relevant queries

and for v22a:
2023-08-25 14:50:04.666 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: participants_by_base_url -> {'http://v22a.ridsp.uss1.localutm/mock/ridsp/v2': 'uss1', 'http://v22a.ridsp.uss1.localutm/ridsp/injection': 'uss1', 'http://v22a.riddp.uss1.localutm/riddp/observation': 'uss1'}
2023-08-25 14:50:04.668 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss1/display_data -> percentiles on 46 relevant queries (24 different URLs, 31 initial queries, 15 subsequent queries): init 95th: 0.09958079999999998; init 99th: 0.10547775999999999; subsequent 95th: 0.0798888; subsequent 99th: 0.08003536
2023-08-25 14:50:04.670 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss1/flights -> percentiles on 37 relevant queries: 95th: 0.029613199999999996; 99th: 0.03133384

environment.yaml only configures a uss1 participant so the discrepancy between v19 and v22a seems fine.

Thanks for the feedback, @BenjaminPelletier, both suggestions seem doable to me, I'll get back to you if I need any clarification.

Taking this to a draft state again until it's in a satisfactory state

Ready for another pass of review. The current version is working, as far as I can trust the logs:
2023-08-31 20:04:52.192 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:104 - Running "ASTM F3411-22a NetRID aggregate checks" scenario...
2023-08-31 20:04:52.193 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: participants -> {'http://v22a.ridsp.uss1.localutm/ridsp/injection': 'uss1', 'http://v22a.riddp.uss1.localutm/riddp/observation': 'uss1'}
2023-08-31 20:04:52.193 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: nb_queries -> 290
2023-08-31 20:04:52.193 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: service_providers -> configured service providers: uss1 - http://v22a.ridsp.uss1.localutm/ridsp/injection
2023-08-31 20:04:52.193 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: observer -> configured observer: uss1 - http://v22a.riddp.uss1.localutm/riddp/observation
2023-08-31 20:04:52.196 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss1/display_data -> percentiles on 46 relevant queries (24 different URLs, 34 initial queries, 12 subsequent queries): init 95th: 0.07079325; init 99th: 0.07741384999999999; subsequent 95th: 0.0712499; subsequent 99th: 0.07249478000000001
2023-08-31 20:04:52.197 | INFO     | monitoring.uss_qualifier.scenarios.scenario:record_note:270 - Note: uss1/flights -> percentiles on 56 relevant queries: 95th: 0.027803249999999998; 99th: 0.02819827
2023-08-31 20:04:52.197 | INFO     | monitoring.uss_qualifier.suites.suite:_run_test_scenario:122 - SUCCESS for "ASTM F3411-22a NetRID aggregate checks" scenario

v19 also has output showing that queries are properly analysed.


fix: indextime nonuniquehost

Codecov Report

Merging #677 (b73a0d7) into develop (8fc2cb6) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff            @@
##           develop     #677   +/-   ##
========================================
  Coverage    91.99%   91.99%
========================================
  Files           51       51
  Lines         2799     2799
========================================
  Hits          2575     2575
  Misses         224      224

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:tada: This PR is included in version 4.0.0-beta.3 :tada:
The release is available on:

v4.0.0-beta.3
GitHub release

Your semantic-release bot :package::rocket:


partclone: fix sha256 and buildInputs

Locally built against nixpkgs-unstable and then rebased onto master. I've also double checked that the contents of the old and new archives is identical. The project didn't build without automake and autoconf so I added those in as well.
This should fix https://hydra.nixos.org/build/28627511
cc @MarcWeber @domenkozar

Yes, horrific, I know. But that's really the actual tag name, see https://github.com/Thomas-Tsai/partclone/tree/stable and also the output of git tag below. Shall I change it to the commit id, or add a note that this is really the tag name?
$ git clone git@github.com:Thomas-Tsai/partclone.git
$ cd partclone
$ git tag
0.2.26-stable
0.2.3
0.2.47
0.2.48-stable
0.2.54
0.2.55
0.2.56
0.2.58
0.2.60
0.2.61
0.2.62
0.2.65
0.2.67
0.2.68
0.2.69
0.2.70
0.2.71
0.2.72
0.2.73
0.2.74
0.2.75
0.2.76
0.2.78
0.2.79
0.2.8
0.2.80
0.2.81
0.2.82
0.2.83
0.2.84
0.2.85
0.2.86
debian/0.2.33
debian/0.2.34
debian/0.2.35
debian/0.2.36
debian/0.2.37
debian/0.2.38
debian/0.2.39
debian/0.2.40
debian/0.2.41
debian/0.2.42
debian/0.2.43
debian/0.2.44
debian/0.2.45
debian/0.2.46
debian/0.2.47
debian/0.2.48
stable

Just in case of doubt: there's no branch named "stable" in this repository - only a tag. But yes you would expect "stable" to be a branch indeed...


70% of CI testing time is spent running test_download_and_delete_fsaverage_surfaces

This is possibly also violating some TOS of MNE/OSF, if we're downloading multiple MB of data on each run of the CI.
Consider deleting this test?
Or have a separate CI runner which runs once a day/week on a cron job rather than on every commit to a live PR?

I added these lines above the tests that involve downloading:
@pytest.mark.skipif(
    IN_GITHUB_ACTIONS,
    reason="Test only when run locally - otherwise github will download these each"
    "time we push",
)

This skips these tests when using Github actions.

Confirmation this is working for all three download tests: (s = skip)


[3.x] Add setter for custom settings view path

Summary
Right now, the views for settings can only be created inside the laravel app resource path at resources/views/twill/settings as defined in AppSetting#getFormBlocks(). It should be possible to add additional paths were settings views can be loaded from. Especially if creating packages which registers additional settings specific to that package.
Describe the solution you'd like
Instead of only reading the views from  resource path with: $directory = resource_path('views/twill/settings/' . $this->getSettingGroup()->getName()); it should be possible to add additional scan paths dynamically. For example through a static setter or a configuration array which can be extended by a package to add it's own settings view path.
Additional context
If you tell me what way you prefer to add this functionality, I could provide a pull request for this.

Have you tried (in the service provider where you're defining settings)
use A17\Twill\Facades\TwillAppSettings;

...
public functgion boot(): void
{
		TwillAppSettings::registerSettingsPath(
			'my/new/custom/view/settings/path'
		);
}