Document refs archival strategy for monorepo

Overview
Hi folks,
I want to contribute the following doc as it's what we have been using for years internally,
but I am not sure where to put the doc so I didn't create a PR for it.
Would appreciate some pointers and early reviews if possible 🙏
Doc contents
In a relatively large repo, many refs (branches or tags or system refs like refs/pull-requests/* or refs/merge-requests/*) could slow down repo in many ways:

More refs to iterate through when using old git client (serving protocol v1)
More objects that are reachable when doing git-gc or git-repack on serverside
Initial git-clone will download all the refs by default

However, refs are often very useful to keep around:

Some deployment / release strategies use git tags as bookmarks for the deployed commit
Branches could also be used the same way.

A work around for this is to introduce a ref is:

Create a fork of the monorepo(origin) as a fork remote
Create a scheduled job which pull all the refs from the origin remote, then push them to the fork remote
Delete all the refs in the origin remote that is older than x months
(Optional) Delete all the refs in the fork remote that is older than y months (given y>x)

This way users often will only have to interact with a 'thinner' version of the monorepo with a lot less refs while all the refs still can be fetch/recovered from the fork remote repository. The thinner version will also have less objects and therefore can perform git-repack / git-gc faster, more regularly to help speed up git push / git pull operations.
Bonus: each hosting platform has different way to optimize how forks are stored and deduplicates. Refer to GHES(1) and Gitlab (2) for specific storage optimization to save on storage spaces.
(1): https://git-scm.com/docs/gitnamespaces
(2): https://docs.gitlab.com/ee/development/git_object_deduplication.html#pool-repositories

after 5 mins of googling how GHES handling forks, I cannot find official docs so I decided to link git namespaces doc instead. Feel free to hit me up with the correct link.

Just a side note: forks normally allow working across a trust boundary, such as in open source code. Private monorepos do not typically have such a trust boundary, so using forks in this way is a way to treat a performance issue, but does cause user issues, especially around sharing code that hasn't merged. The downsides of this approach should be included as a warning.

Just a side note: forks normally allow working across a trust boundary, such as in open source code. Private monorepos do not typically have such a trust boundary, so using forks in this way is a way to treat a performance issue, but does cause user issues, especially around sharing code that hasn't merged. The downsides of this approach should be included as a warning.

@derrickstolee thanks for the quick reply.
Let me try to rephrase it to make sure that I get your point:

Note: Depends on the Hosting Service, a Fork repository might have a different ACL than the Origin Monorepo. This could potentially enable read access to source code to unintended groups or users (can read Fork repository while not having access to Origin Monorepo)
For example: Let's say the monorepo is located at https://githost.org.com/group1/monorepo.git with user A and B and C having access to the code in group1 but only A and B have access to read group1/monorepo.git. Then having a fork at https://githost.org.com/group1/monorepo-fork.git might means that user C might have read access to content of group/monorepo.git through group1/monorepo-fork.git unintendedly.
This setup should be coupled with mechanism to ensure that the access control over the Fork would be the same (or more strict) compare to the Origin Monorepo. For access control specific configuration, please refer to hosting vendor documentations.

Does that seem right?

Just a side note: forks normally allow working across a trust boundary, such as in open source code. Private monorepos do not typically have such a trust boundary, so using forks in this way is a way to treat a performance issue, but does cause user issues, especially around sharing code that hasn't merged. The downsides of this approach should be included as a warning.

@derrickstolee thanks for the quick reply.
Let me try to rephrase it to make sure that I get your point:
Note: Depends on the Hosting Service, a Fork repository might have a different ACL than the Origin Monorepo. This could potentially enable read access to source code to unintended groups or users (can read Fork repository while not having access to Origin Monorepo)
For example: Let's say the monorepo is located at https://githost.org.com/group1/monorepo.git with user A and B and C having access to the code in group1 but only A and B have access to read group1/monorepo.git. Then having a fork at https://githost.org.com/group1/monorepo-fork.git might means that user C might have read access to content of group/monorepo.git through group1/monorepo-fork.git unintendedly.
This setup should be coupled with mechanism to ensure that the access control over the Fork would be the same (or more strict) compare to the Origin Monorepo. For access control specific configuration, please refer to hosting vendor documentations.
Does that seem right?

I think you misunderstand what my concern is. I believe that the hoster can lock down the read privileges of forks properly (for example: you can fork a private repo but can't make that fork public). In the world of public repos, people fork so they can write to a copy of the repository that they can already read. In monorepos, the contributors typically have write permissions to the monorepo, since that is necessary to approve pull requests for their peers.
What I am worried about is that if everyone has their own fork of the monorepo, then user A pushed their code to their fork and user B needs to add A's fork in order to fetch that data. If A and B were instead pushing to the monorepo, then B could just fetch from the origin as normal and checkout A's branch.

I think you misunderstand what my concern is. I believe that the hoster can lock down the read privileges of forks properly (for example: you can fork a private repo but can't make that fork public). In the world of public repos, people fork so they can write to a copy of the repository that they can already read. In monorepos, the contributors typically have write permissions to the monorepo, since that is necessary to approve pull requests for their peers.
What I am worried about is that if everyone has their own fork of the monorepo, then user A pushed their code to their fork and user B needs to add A's fork in order to fetch that data. If A and B were instead pushing to the monorepo, then B could just fetch from the origin as normal and checkout A's branch.

Ah, this is more clear now.
Yes, this strategy is NOT to be confused with encourage 'forking' the monorepo regularly. In fact, we explicitly disable forking internally for monorepo use case to help guide our users toward contribute to the repo directly instead of through a fork.
Forking mechanism was used in the proposal because it is where Hosting Vendor often equipped with storage deduplication and cleanup optimization. In some cases, it also helps speed up the refs archive process since you don't need to re-upload the objects which are shared between the 2 copies.

Edit: Also, this doesn't change anything about the scale issues under the server's responsibility, since it needs to consider all of the forks' refs when doing maintenance activities. The forks only resolve the symptom of a large number of refs in the ref advertisement during a fetch and the number of refs stored in each client.

Not particularly true.
Internally, we don't use a fork for refs archive. It's an entirely separate copy of the repo with no object shared between the 2. In fact, the archive copy is stored on a separate set of hosts with slower storage medium than our primary copy. This enabled 2 things:

We have another backup of our monorepo on top for other backup mechanism that vendor has provided.
The repack / gc on our primary copy has a lot less objects to deal with and thus run a lot faster. With gitlab current cleanup strategies, this enable out bitmap index and commit-graph to be updated more frequently than our fork.

The tradeoff here is that during the archive process, we have to re-download and re-push the refs and objects from 1 place to another. But as it's a background job, it has no visible user impacts (except for those who clone all the branches and tags, then their refs list get updated fairly frequently for deleted refs in remote origin).

Another caveats: For monorepo with LFS, this means that you will also need to replicate the LFS storage from 1 copy of the repo to the other for both copies to be able to function individually.
If you decided to use the same LFS store between the 2 repos, be mindful that clean up mechanism in the origin repo may prune your LFS objects for they are no longer reachable from the post-archival remaining refs. In that case, you might need to either disable the Git LFS cleanup from both repositories as neither do contain a complete set of refs to sufficiently do a reachability checks for objects in Git LFS.

For GHES, if you create a fork, it behaves as @derrickstolee mentioned. You'd have to create a "clone and push" copy of the repo with no connection to its upstream.
The way I've tried to structure the book symptoms -> diagnosis -> solution starters. This feels like it dives a little deeper than I'd prefer. You have some good symptoms and diagnosis; if I were writing this section, I'd probably end with "find ways to eliminate unused refs -- perhaps those older than x months". Automating a mirror and retaining refs on it is out of scope for monorepo success.

For GHES, if you create a fork, it behaves as @derrickstolee mentioned. You'd have to create a "clone and push" copy of the repo with no connection to its upstream.

@vtbassmatt I can switch up the writing to recommend using a stand-alone non-fork copy, then adding a note that using a fork will help save disk space on server storage, but come with a set of trade-offs(i.e. repack/gc remains slow)

The way I've tried to structure the book symptoms -> diagnosis -> solution starters. This feels like it dives a little deeper than I'd prefer. You have some good symptoms and diagnosis; if I were writing this section, I'd probably end with "find ways to eliminate unused refs -- perhaps those older than x months". Automating a mirror and retaining refs on it is out of scope for monorepo success.

Good suggestion.
Symptoms: slow to git-pull and git-clone, repo size getting very high
Diagnosis:

Run git ls-remote origin | wc -l on client side to count refs being adverised by remote
Different vendors may expose metrics in term of distribution of git protocol usages(v0, v2 etc..)
Run some git for-each-ref command on serverside to help identify stale refs
Run a git clone --mirror on server to create a full copy of the current repo to test pruning refs + gc. Verify result with git count-objects -v -H or by measuring clone/pull time from client side.

Solutions:

Simple starter: Prune old refs.
Advance: Archive old refs to a different copy first, then prune (refs multi-tier storage)

Let me know what you think about this general outline/format. I can start a new markdown doc in a PR which will get linked / referenced-to from fetches-too-slow.md

A new section to fetches-too-slow.md sounds great. The heading could be "Prune old refs".
I have some more concerns about the content. I don't want it to become a cookbook of precise commands to run, especially in this case where we're recommending deleting data. The book should introduce concepts and give pointers on how to 1) learn more and 2) speak intelligently with experts (or your vendor). The proposed content is very command-oriented, which I think is a mistake.
I very much realize that I'm changing goalposts on you (or rather, introducing goalposts where there were none before). I appreciate your patience as I'm just discovering some of these thoughts as a result of our conversations. I do think that the idea of reducing ref count should be included in the book someplace.

I have some more concerns about the content. I don't want it to become a cookbook of precise commands to run, especially in this case where we're recommending deleting data. The book should introduce concepts and give pointers on how to 1) learn more and 2) speak intelligently with experts (or your vendor). The proposed content is very command-oriented, which I think is a mistake.

This sounds great.
However I do remember my experience when I was newly onboarded to manage our current monorepo and how lost I felt back then. This book will be targeting technical users, I think having some pseudo-code: not to exact implementation but some example commands, might be helpful. For example, a book like Software Engineering at Google would include many sample code snippets to demonstrate the concepts (see page 37/602 in the free pdf version).
What I would propose is, at the minimum, to have some small basic snippets that can be executed on the git client side. Then we can add footnotes / references section pointing to vendor specific docs on how server side should be maintained?
# Examples

# Show all refs 'origin' remote is advertising to client before actual data transfer
# See: https://git-scm.com/docs/git-ls-remote.html for details usages
> git ls-remote origin

I very much realize that I'm changing goalposts on you (or rather, introducing goalposts where there were none before). I appreciate your patience as I'm just discovering some of these thoughts as a result of our conversations. I do think that the idea of reducing ref count should be included in the book someplace.

Yeah hashing out ideas in GH issue has been great :)

You raise a good point. I want to be careful to keep the book accessible, but also provide real value to those feeling lost.
Here's an idea -- much like we have the prose-oriented problems/solutions section today, perhaps there's a whole new section of recipes/snippets/specific commands. Then we can hyperlink from problems -> recipes. This avoids the other problem I have with deeply technical, "run these commands"-type of content: it's ugly to try and read when lines of code or script are interspersed with prose.


[Issue] - Health Checker html report not showing correct info regarding vulnerabilities.

Provide Version Number
<IP_ADDRESS>9
Describe the issue
I ran the latest Healthchecker script, <IP_ADDRESS>9, on both of my exchange servers and notice something odd. I ran the script on the 1st exchange server. Fully patched. The HTML report didn't report any vulnerabilities.
Ran the script on the 2nd exchange server. Fully patched. It reported all the vulnerabilities from the Hafnium attack.
I also had the script output the txt and xml file. Open the file up and it doesn't show any vulnerabilities in either servers. So I ran other tools from Microsoft. Their tools shows that none of my servers needs an remediations.
Is there a HTML coding error in the Healthchecker script?
Expected behavior
Should a fully patch server shows the Hafnium vulnerabilities in the output?
Additional context
Add any other context about the problem here.

@emptystreets130 can you email the files (HTML and XMLs) and show what you are talking about to<EMAIL_ADDRESS>

Hmm. Odd. I ran the report again on both servers just now. No Hafnium vulnerabilities are listed on the server in question.
The previous report I had was right after I installed the May patch. I guess I had to recreated the xml file???

@emptystreets130 correct the HTML report is based off the XML files in the current location. If you only ran the Health Checker against 1 server after installing the security path, then ran the HTML report while having other XML files in the director for other servers, it will report it based off what is in that XML file for those other servers.


Readme not complete

Hi, I wanted to run the extension locally but came across problems.
I'm missing and example config.ts file.
Exporting CLIENT_ID is not enough in my case to run the extension, it's looking for more values like: OAUTH_BASE_URL, API_BASE_URL etc.
Could you make this complete, so anyone can just clone, follow installation and setup steps and have a running application?

Hey,
Next week, I think I'll make a new release of the extension and I'll take this into consideration and update the readme.
Just to help you now until I make the change, here is what's missing from the file:
export const RESPONSE_TYPE_TOKEN = 'token';
export const SCOPES: string[] = ['user:read:follows'];
export const OAUTH_BASE_URL = 'https://id.twitch.tv/oauth2';
export const API_BASE_URL = 'https://api.twitch.tv/helix';

Thanks!
Question: You are using Redux-toolkit.
Something I really want to use in my personal Chrome extension.
The problem so far I have:
Background.js is running in another context than Content.js and Popup.js. How do you keep the state persistent in your project?
Maybe in your case you just need the state available in Background.js and not Popup.js.


Postgres support

Any chance of getting postgres support for this tool? I hear it's a superior database

@jackhopner clearly you haven't read the blogpost :trollface:

Currently, only MySQL is supported. It looks like adding support for PostgreSQL, for example, would be a two hour job. However, I'm not planning on it as we wouldn't be able to test it on a daily basis, like we do with MySQL now. But you can! sql and chart are open for contributions.


Some steps have not been recorded

Describe the bug
I've tried several times, ui5-journey-recorder missed some steps in my test.
e.g.
1.Input Company Code '1111';
2.Input Profit Center '2222';
The step 2 hasn't been recorded.

Sry, for the late answer.
Can you create a better example with an example application.
With this description it's not possible to recreate your issue.

@ShuqiLv i fixed an issue #71 , after the UI5JourneyRecorder is updated to version 0.3.3, please retest.


GHA for C++20 test uses Docker image

@QuantamHD fyi, using docker image to avoid instability. We have seen some PRs failing on this test due to a timeout while installing the dependencies.

Cool! Looks like a good change.


Add build status information to the README file

Provide travis-ci build status.
Below is an example from ORT:
https://github.com/heremaps/oss-review-toolkit
https://travis-ci.com/heremaps/oss-review-toolkit.svg?branch=master
Documentation on the status images:
https://docs.travis-ci.com/user/status-images/

Resolved with commit eab9b3b


Docs/add env var section

Closes #1242 #1240 #1221
This PR updates the task list of the documentation, introduces a new Environment variables section in the docs, and adds quotation marks to pip install "rubrix[server]".
@frascuchon Could you have a look at the env var list for the server, I'm sure I missed some variables.

@frascuchon Added the list of env variables you mentioned, plus a few more. This should be ready to review from my side.


Allow SkillsConfiguration.configure to be called multiple times

right now SkillsConfiguration.configure must only be called once; sometimes clients mistakenly call it on every page load - we should allow that and only perform logic once

PR: #106

@rmmayo after further discussion, to stay backwards compatible, we decided to set intialized=false but still call afterConfigure without failure


Feature/reasonable adjustments report fix

I've approved the code, but you probably need to update some tests as CircleCI build has failed.

@mbrookeswebdev thank you!


Fix: add word-wrap in known issues

JIRA link
None
Change description
Fix security check, word-wrap vulnerability
Does this PR introduce a breaking change? (check one with "x")
[ ] Yes
[x] No

Changes already merged


Include normal custom devices in hardware search

[x] This contribution adheres to CONTRIBUTING.md.

What does this Pull Request accomplish?
Include normal custom devices in hardware search, in addition to the currently included SLSC custom devices.
Why should this Pull Request be merged?
This is required to enable non-SLSC custom devices which implement the Routing and Faulting Hardware API to be discovered by the custom device.
What testing has been done?
Ran unit tests locally, confirmed that a non-SLSC implementation of the Routing and Faulting Hardware API appeared for selection in the routing channel configuration page.

@rtzoeller , is there a documentation impact to this change, now that more devices will appear?

@niphilj nothing new will appear right now. This just enables other custom devices (like an NI-SWITCH one) to plug in to it.


Add more complex tests

What are the more complex tests?

@dignifiedquire ping

hmm I don't actually remember anymore. I think this can be closed in favoir of integration tests with go


Fix broken url

It fixes broken url http://container.thephpleague.com/3.x/delegate-containers/ (from the menu)

Docs were incomplete, is fixed


BarcodedBamToFastq does not allow more than one mismatch option

Bug reported on line 86 and 121 in BarcodedBamToFastq.java and line 220 in BarcodeMethods.

Changed the implementation of BarcodeMethods (commit a332eef8a1b8cf99b332befeb0f4f0ba009a08fb) solving the bug. Once I merge the branch develop with master, the problem will be fixed.


Is matrix B already reshaped supported now?

Output of 'strings libarm_compute.so | grep arm_compute_version':
arm_compute_version=v18.11 Build options: {'cppthreads': '0', 'arch': 'arm64-v8a', 'opencl': '0', 'neon': '1', 'examples': '0', 'asserts': '0', 'debug': '0', 'os': 'linux', 'Werror': '1'} Git hash=3d2d44ef55ab6b08afda8be48301ce3c55c7bc67
Platform:
arm64 A57
Operating System:
linux

Problem description:
In function "NEGEMMLowpMatrixMultiplyCore::validate", some code like this:
ARM_COMPUTE_RETURN_ERROR_ON_MSG(gemm_info.is_b_reshaped(), "Matrix B already reshaped is not supported");
I want to verify if the current version supports reshaped matrix tensor b.
Thank you very much.
For example:
arm_compute::NEGEMMLowpMatrixMultiplyCore gemm_core;
arm_compute::GEMMInfo info(false, true, true); // here second param is true
gemm_core.configure(&a, &b, nullptr, &c, info);
gemm_core.run();

We're not planning on support B already reshaped because the reshaped shape depends on which algorithm is selected and this is out of the user's hands.


Laravel 9.x Compatibility

Can you please update your package code and dependencies to be compatible with Laravel 9.x.?

Added in v1.6


Experimental 3-way-merge support for deploy

Set WERF_3_WAY_MERGE_MODE_ENABLED=1 to enable 3 way merge during deploy.
https://github.com/flant/helm/pull/12

Related issue https://github.com/flant/werf/issues/1616.
Not fixed fully yet.


[gardening] Remove unused method makeValue(i)

What's in this pull request?
Remove unused method makeValue(i).
Resolved bug number: –

Before merging this pull request to apple/swift repository:

[ ] Test pull request on Swift continuous integration.

Triggering Swift CI
The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:
Smoke Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please smoke test
    All supported platforms     | @swift-ci Please smoke test and merge
    OS X platform               | @swift-ci Please smoke test OS X platform
    Linux platform              | @swift-ci Please smoke test Linux platform

A smoke test on macOS does the following:

Builds the compiler incrementally.
Builds the standard library only for macOS. Simulator standard libraries and
device standard libraries are not built.
lldb is not built.
The test and validation-test targets are run only for macOS. The optimized
version of these tests are not run.

A smoke test on Linux does the following:

Builds the compiler incrementally.
Builds the standard library incrementally.
lldb is built incrementally.
The swift test and validation-test targets are run. The optimized version of these
tests are not run.
lldb is tested.

Validation Testing
    Platform     | Comment
    ------------ | -------------
    All supported platforms     | @swift-ci Please test
    All supported platforms     | @swift-ci Please test and merge
    OS X platform               | @swift-ci Please test OS X platform
    OS X platform               | @swift-ci Please benchmark
    Linux platform              | @swift-ci Please test Linux platform

Lint Testing
    Language     | Comment
    ------------ | -------------
    Python       | @swift-ci Please Python lint

Note: Only members of the Apple organization can trigger swift-ci.

This code was introduced in 85ee846d360d9c5d2cf8ccd26ec3cbdfd07232e8 so this PR should probably be reviewed by @dabrahams :-)

@swift-ci Please smoke test and merge


0.1.0 fails to compile previously accepted programs

Consider the following program:
import CoercibleUtils (over2)
import Data.Finitary (Finitary(..))

newtype Finiteness a = Finiteness a

instance (Finitary a) => Eq (Finiteness a) where
  (==) = over2 Finiteness (equating toFinite)

equating :: (Eq b) => (a -> b) -> a -> a -> Bool
equating p x y = p x == p y

When using coercible-utils-0.0.0, this compiles. However, with coercible-utils-0.1.0, I get the following error:
    • There is no CoercibleUtils.Newtype.Newtype instance for
          Bool
      because it is not a newtype.
    • In the expression: over2 Finiteness (equating toFinite)
      In an equation for ‘==’:
          (==) = over2 Finiteness (equating toFinite)
      In the instance declaration for ‘Eq (Finiteness a)’
   |
 7 |   (==) = over2 Finiteness (equating toFinite)
   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Is this a regression? Was my original code somehow incorrect?

It was a philosophy change. Type inference for the old version was pretty bad, so we're doing something different now. I didn't realize the old interface was going away altogether; I think it might make sense to bring it back in a different module for users who need its extreme flexibility.

I would certainly prefer if the old interface remained somewhere. As-current, I'm faced with the rather unpleasant choice between being able to use over and friends as I've been prior and being able to have GHC 8.8 support. Some of the locations where I use (for example) over2 cannot be rewritten as elegantly using the new interface - this one happens to be one that can, but it's quite trivial for bug reporting purposes.

I'm all in favor of offering both options, but would you mind showing an example that's less easily converted? That could point the way toward further development.

Let's consider the example above - based on what you told me, I would have to write something like
  (==) = op Finiteness . over2 Finiteness (equating toFinite)

Now, this is what it looks like without use of over2:
  (Finiteness x) == (Finiteness y) = equating toFinite x y

This is actually more concise than the version with the new interface. Another case I have (in the same package) is simplifying some boilerplate methods for MVector instances; for example:
import qualified Data.Vector.Generic.Mutable as VGM
import qualified Data.Vector.Unboxed as VU

-- some more stuff here

newtype PackInto a b = PackInto { unpackFrom :: b }

newtype instance VU.MVector s (PackInto a b) = MV_PackInto (VU.MVector s a)

-- some other stuff

  basicOverlaps = over2 MV_PackInto VGM.basicOverlaps

With the new interface, I have to do something like
  basicOverlaps = op ??? . over2 MV_PackInto VGM.basicOverlaps

Here, I'm not even sure what ??? should be, since MV_PackInto is a newtype wrapper around an MVector, not a Bool, in addition to being less concise, just as above.

For your == example, and others with that shape, I think there's a better way:
import Data.Function (on) -- Why isn't that in the Prelude?

instance Finitary a => Eq (Finiteness a) where
  (==) = (==) `on` (toFinite .# op Finiteness)

I don't understand your second example well enough to have an opinion. I suspect you might want a function like this, among others, for some extreme performance hacking:
onco :: Coercible a b => (b -> b -> c) -> (a `arr` b) -> a -> a -> c
onco bbc _ = coerce bbc

I definitely want to add the opposite of op:
upgrade :: Coercible a b => (a `arr` b) -> a -> b
upgrade _ = coerce

I didn't know about on - thanks! I agree that upgrade is useful and should exist. As far as onco is concerned, I can certainly do that, but this is very similar to what over2 used to do for me, and I wouldn't need onco (possibly in multiple places) if the old interface could continue to exist. I don't think having the old interface around does anyone any harm - you can keep the new interface as the default, and have the old interface remain for people who want to keep using it, in a separate module.

I agree with you that the old interface should continue to exist. But since much of the old interface is awkward in practice (due to poor type inference), I would very much like to expand the new interface to accommodate unsatisfied real-world needs like yours!

If we bring back the old interface, I would prefer it not to live in the same package as the new one: I believe that would simply be confusing. Since IMO the name coercible-utils fits the old interface better, the new interface would have to find a new home.

OK, having done a bit of reading, and thinking, I think I'm ready to give a proper, thought-out and explained example, as well as some suggestions.
Background
This example is based on my finitary library. Without going into it too deeply, if we have an instance of Finitary for a type a, we get the following things:

An associated type Cardinality a :: Nat, which represents the number of (non-bottom) inhabitants of a;
An isomorphism between Finite (Cardinality a) and a, witnessed by a pair of functions fromFinite :: Finite (Cardinality a) -> a and toFinite :: a -> Finite (Cardinality a)

One useful thing this gets us is the ability to 'pack' a type with a Finitary instance into another type with a Finitary instance, since fromFinite must be a bijection (by the laws. Therefore, we can munge the types into each other, without worrying about overlaps or anything like that. This is particularly useful for Unbox instances - as long as we can munge into a type with an existing Unbox instance, and said type's cardinality isn't smaller than ours, we now essentially gain such an instance 'for free'.
To do this, we need something analogous to this:
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeFamilies #-}

import GHC.TypeNats
import Data.Finite
import Data.Kind

import qualified Data.Vector.Unboxed as VU
import qualified Data.Vector.Generic as VG
import qualified Data.Vector.Generic.Mutable as VGM

newtype PackInto (a :: Type) (b :: Type) = PackInto b

This is essentially Flip Const, mostly for convenience with DerivingVia: basically, a corresponds to the type we 'munge into', while b is the actual thing we want to represent. The desired goal is being able to write something like deriving Unbox via PackInto Word8 or such.
Now, to write an Unbox instance, there is a fairly hefty procedure. In essence, we need to write a 'wrapper' around an existing Unbox instance, and then provide all the necessary machinery for the vector library to handle it. First, we define a newtype instance of the relevant type:
newtype instance VU.MVector s (PackInto a b) = MV_PackInto (VU.MVector s a)

Essentially, this says 'a mutable unboxed vector of PackInto a bs is really just a newtype wrapper (MV_PackInto) around a mutable unboxed vector of a, with the same state token type'. Having done that, we now have to instantiate the VGM.MVector type class - in our case, the constraints look like so:
instance (Finitary a, Finitary b, Cardinality b <= Cardinality a, VU.Unbox a) => VGM.MVector VU.MVector (PackInto a b) where

A bunch of methods are required here: the one I'll use as an example (with all constraints noted) is:
basicOverlaps :: (Finitary a, Finitary b, Cardinality b <= Cardinality a, VU.Unbox a, VGM.MVector v (PackInto a b)) => v s (PackInto a b) -> v s (PackInto a b) -> Bool

Now, the implementation here is rather trivial - if the underlying vectors overlap, so do the wrappers. Therefore, the 'basic' way of doing this would be to write something like this
basicOverlaps (MV_PackInto v1) (MV_PackInto v2) = VGM.basicOverlaps v1 v2

This gets tedious quickly. Also, there are quite a few such methods where all we do is delegate to the underlying types.
The problem
coercible-utils-0.0.0 to the rescue! This is basically an ideal use of over2:
basicOverlaps = over2 MV_PackInto VGM.basicOverlaps

This is concise and fairly clear in its effects. The key thing that makes this work is the resulting type, which is (class constraints omitted for brevity):
over2 MV_PackInto VGM.basicOverlaps :: (Coercible (VU.MVector s a) (MV_PackInto s (PackInto a b), Coercible Bool b') => MV_PackInto s (PackInto a b) -> MV_PackInto s (PackInto a b) -> b'

This works like a charm, because Coercible is reflexive, which means that b' will happily unify with Bool, and everyone goes home happy.
However, this is not possible with the new API, as the type of over2 is now
over2 :: (Newtype n o, Newtype n' o', Similar n n') => (o `to` n) -> (o -> o -> o') -> n -> n -> n'

After 'concretifying' to the types in question, we get this:
over2 MV_PackInto VGM.basicOverlaps :: (Newtype (MV_PackInto s (PackInto a b)) (VU.MVector s a), Newtype n' Bool, Similar (MV_PackInto s (PackInto a b)) n') => MV_PackInto s (PackInto a b) -> MV_PackInto s (PackInto a b) -> n'

The problem is that this doesn't work - n' will not unify with Bool. Indeed, it cannot even unify with anything that meaningfully could store a Bool for us, due to the definition of Similar:

Two types are Similar if they are built from the same type constructor and the same kind arguments.

Given that MV_PackInto is just a newtype around VU.MVector, there is nothing Similar to it that I could use here. The kind of MV_PackInto is Type -> Type -> Type -> Type, and the 'underlying thing' is an entire mutable vector - both are not suitable in any way for storing a single Bool.
Now, I assume the Similar constraint has a reason to be there, but it's ultimately what's creating this issue. Looking through the other similar functions (under, under2, ala, etc), it seems that a similar (sorry, bad pun) Similar constraint is present there also.
Proposed solutions
These are based on my understanding, which is likely limited. However, the way I see it, two things need to happen here to restore this functionality, while keeping (some of) the advantages of the new interface.
Remove the Similar constraint on over2 (and possibly other similar cases)
I'm not entirely clear on why this constraint is required - it is a severe restriction relative the old version, and potentially breaks a lot of prior uses. The kindedness enforcement is particularly harsh here - I don't even see a reasonable solution under that kind of (again with these puns, argh) constraint.
Weaken the second Newtype to Coercible
Given the compiler error, it would seem that Newtype lacks the reflexivity properties of Coercible. However, it is this very reflexivity that allows uses similar to the one I described. I believe stronger direction vis-a-vis the 'packer' (as well as the Newtype constraint used there) is warranted, but the return type could be considerably freer.
Proposed over2 signature
over2 :: (Newtype n o, Coercible a b) => (o `to` n) -> (o -> o -> a) -> n -> n -> b

Conclusion
Hopefully this makes my use case, situation, and issues, clear. I certainly think that I'd be far from alone in having such issues, and in my view, the new interface significantly weakens the power of the old. At the same time, as someone who has (painfully) experienced the difficulties of using the old interface, I welcome any improvement to type inference and usability. I believe a middle ground is possible, and could be pursued.
If this is not possible, I agree with @sjakobi - the naming could cause confusion. Since I am not a maintainer of this package, though, the decision does not rest with me.

Fascinating stuff! First time I've seen "newtype instance" admittedly and I definitely don't comprehend all of this.
I hope that @treeowl can explain why exactly the new over2 doesn't work for your basicOverlaps example.
Regarding the type you propose for over2:
over2 :: (Newtype n o, Coercible a b) => (o `to` n) -> (o -> o -> a) -> n -> n -> b

This just wouldn't fit into the new API since there's no way to infer the result type from the arguments to over2.
What I think you can do, is define
over2' pack op a b = coerce (over2 pack op a b)

Does that work for you?

@sjakobi I don't have a terribly strong opinion about where the Newtype API should live. Should I open a discussion on the libraries list?

@treeowl Actually if you, @kozross, or @chessai, or anybody else wants to take over the package, the new maintainer can do as they please. For me, this package was mostly about experimenting with Coercible. Your new API is super interesting too! But I don't really have any use for this package…

@sjakobi No, I don't think this would work, for precisely the non-unification reason given before. Ultimately, coerce requires that whatever I get out of over2 is Coercible to Bool; however, over2 in the new interface requires Similar to hold for the result, which basically makes this impossible to satisfy.
I'm happy to take on maintenance of this package, but at the same time, @treeowl is definitely a major contributor and thus has priority. I don't wanna unilaterally wipe out or modify someone else's (considerable) work, and so if @treeowl wants this, I'd rather they take it instead of me.

I don't need to maintain this package. I do want the Newtype version (as it is now, or maybe even with stronger inference somehow) to survive somewhere. I don't care where. I do think we should reach a satisfactory answer to that question before we proceed though.

@treeowl If it were up to me, I would basically have your interface be the default, then bring back the old interface exactly as-was in a separate module, which people could import if they choose (qualified if they need both). I believe for a lot of use cases, your interface is superior: mine just happens not to be one of them.

That strikes me as totally reasonable. @sjakobi is concerned it will be
confusing, but I disagree.
On Fri, Sep 13, 2019, 5:49 PM Koz Ross<EMAIL_ADDRESS>wrote:

@treeowl https://github.com/treeowl If it were up to me, I would
basically have your interface be the default, then bring back the old
interface exactly as-was in a separate module, which people could import if
they choose (qualified if they need both). I believe for a lot of use
cases, your interface is superior: mine just happens not to be one of
them.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sjakobi/coercible-utils/issues/24?email_source=notifications&email_token=AAOOF7LZ5CF5TXQONTBHHLLQJQDFZA5CNFSM4IVL3NYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6WIZFI#issuecomment-531401877,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOOF7LYBKWQK5RRI2XIZYLQJQDFZANCNFSM4IVL3NYA
.

The only source of confusion I could foresee would be for people who upgrade from 0.0.0 to whatever version above that, then suddenly being hit with code not compiling as it used to. However, I believe that the PVP permits this, and as long as this is properly documented (preferably in several places), it shouldn't be an issue. Otherwise, I don't believe that confusion is possible.

The confusion I was concerned about is when you use QuickJump in the haddocks, find two versions of e.g. over2, and then have to figure out which one is right for you. Good documentation can probably address this.
I would be happy to add you as a maintainer on Hackage @kozross, and to transfer this repo to you. Having a maintainer who uses this package himself will be much better for this package.
@chessai Any objections?

@kozross I've added you as a maintainer on Hackage.
 Alternatively I can rename the repo. What should I do? :)

No objections here.

It seems generally much nicer to create GitHub "organizations" to own
packages. Then they don't have to move around as maintainers change.
On Mon, Sep 16, 2019, 3:04 PM chessai<EMAIL_ADDRESS>wrote:

No objections here.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sjakobi/coercible-utils/issues/24?email_source=notifications&email_token=AAOOF7NSDNCSBTBWWFOX3DLQJ7KENA5CNFSM4IVL3NYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62FZ2A#issuecomment-531913960,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOOF7IJ6KPULXZMZMWPMFLQJ7KENANCNFSM4IVL3NYA
.

@sjakobi Thanks! I've now removed my fork, so you can transfer it to me.

It seems generally much nicer to create GitHub "organizations" to own packages. Then they don't have to move around as maintainers change.
…
On Mon, Sep 16, 2019, 3:04 PM chessai @.***> wrote: No objections here. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#24?email_source=notifications&email_token=AAOOF7NSDNCSBTBWWFOX3DLQJ7KENA5CNFSM4IVL3NYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD62FZ2A#issuecomment-531913960>, or mute the thread https://github.com/notifications/unsubscribe-auth/AAOOF7IJ6KPULXZMZMWPMFLQJ7KENANCNFSM4IVL3NYA .

I agree with this. I've done this with haskell-primitive and haskell-snmp, and there's also haskell-streaming. this is probably the best course of action.

It seems generally much nicer to create GitHub "organizations" to own
packages. Then they don't have to move around as maintainers change.

I'll let @kozross decide this.

I have no problem with this idea.

I have no problem with this idea.

Sounds great! :) Can you implement it then?

@sjakobi I'll probably work on this closer to the weekend. If I find time during the week, I will definitely do so.

I have created the organization, hopefully correctly. I've invited @treeowl - who else should be added? I'll transfer the repository to it shortly.

That's a surprising name... Others use names like haskell-streaming, for
example. But it's up to you ;-)
On Tue, Sep 17, 2019 at 4:42 PM Koz Ross<EMAIL_ADDRESS>wrote:

I have created the organization https://github.com/love-haskell,
hopefully correctly. I've invited @treeowl https://github.com/treeowl -
who else should be added? I'll transfer the repository to it shortly.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/kozross/coercible-utils/issues/24?email_source=notifications&email_token=AAOOF7MDNA63SUUP2DWRDJDQKE6KNA5CNFSM4IVL3NYKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD65234I#issuecomment-532393457,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAOOF7KQQUYYWPEFFR6F5WDQKE6KNANCNFSM4IVL3NYA
.

@treeowl I dunno - guess I'm in that kind of mood today.


Proposal: allow trace to serialize snapshot value for specific functions

Some function may modify it's input, and some may not. For these modifying the input, serializing the snapshot helps to improve the trace accuracy.
And it's better to support this smartly without the user needing to modify anything.

Added a new option:
trace.Options().WithSnapshot(func(stack *Stack) bool {
   return true
})


Update Composer dependencies (2023-06-03-00-10)

Visual regression test passed!
View the visual regression test report


Alpha compositing in DX12

See https://github.com/microsoft/windows-rs/discussions/563

I'll put also this here:
Windows with C++ : High-Performance Window Layering Using the Windows Composition Engine, that's what I followed doing it in the Druid


INSERT fails when the store definition have a less number of columns than the actual table

Description:
When we define an RDBMS Store with less number of columns than the actual RDBMS table, insertion fails.
This is because we have used following as INSERT query template in rdbms-table-config.xml [1]
<recordInsertQuery>INSERT INTO {{TABLE_NAME}} VALUES ({{Q}})</recordInsertQuery>
Affected Product Version:
SP 4.0.0
OS, DB, other environment details and versions:
N/A
Steps to reproduce:
For example, let us say I have a table in mysql with following schema:

Field
Type

name
varchar(20)

owner
varchar(20)

age
int(11)

Then I define a Store for above table in a Siddhi app as below:
@Store(type='rdbms', .....)
define table ownerTable (name string, owner string);

define stream ownerStream (name string, owner string);

from ownerStream
select name, owner
insert into ownerTable;

Note that I have not included age column in the Store definition.
Now when I simulate 'ownerStream' stream the insertion would fail.
References:
[1] https://github.com/wso2-extensions/siddhi-store-rdbms/blob/v4.0.15/component/src/main/resources/rdbms-table-config.xml#L9

Close the issue as fixes merged https://github.com/wso2-extensions/siddhi-store-rdbms/issues/73 #74


Parse Instruction should handle time and temperature ranges

30 to 35 minutes
180 to 190F

Temperature ranges are not that typical so they won't be implemented for now.


Explicitly set up CXX env for knn in AL2 build env

Description
Explicitly set up CXX env with g++ for knn in AL2 build env.
Issues Resolved
https://github.com/opensearch-project/opensearch-build/issues/4379
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Related: https://github.com/opensearch-project/opensearch-build/issues/4379

https://github.com/opensearch-project/opensearch-build/issues/4379


Permance of Unimatchv2 using DINOv2-small

On Pascal dataset, 92 labeled split, It's reported that Unimatchv2 can only achieve 79.0(precisely 78.98 in training logs) when using DINOv2-small as backbone. But when we were reproducing this experiment, we found that unimatchv2 actually performs much better than that, achieving mIoU higher than 83%. And Fixmatch demonstrate competitive results to Unimatchv2 on DINOv2-small.

Hi, under such scarce-label regimes, it is normal that the final result may fluctuate.


confused about the documentation [important]

I think there do not have a clear describe regard to seata component and their respective configration.
Yea, you guys wrote a documentation but it just describe every option's mean.
Yea, you guys impletment various of config and registy center but it's not clearly about their's usage.
But I do not recomment wrote a documentaion all in one.
Let's have a look about what happen
Fristly I download a seata server package and found there have 2 files about the configruation.
One is conf/application.yaml which one I think is a configuration for seata sever seems like our springcloud's application.yml.
One is script/config-center/config.txt which one is refer to seata offical documentation
question 1:
参数同步到配置中心使用demo
I did it.

And then It looks strange. My first impression of this is something maybe really wrong. but  ,I don't know.
question 2:
There do not have a documentation about application.yaml Just have a example file .
seata.config.nacos.data-id for what?
Does this prove someting about question one ,I don't know.
seata:
  config:
    # support: nacos 、 consul 、 apollo 、 zk  、 etcd3
    type: file
    nacos:
      server-addr: <IP_ADDRESS>:8848
      namespace:
      group: SEATA_GROUP
      username:
      password:
      context-path:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
      data-id: seataServer.properties

I'm still confused about where this configuration should be placed,and when they will be loaded and use.

 The community has not provided sufficient guidance on the configuration documentation. In older versions, Seata configuration could only use multiple independent small configuration items, while in newer versions, all-in-one configuration is supported, as seen in the seataServer.properties in your configuration file. Similarly, the documentation is outdated and lacks a systematic approach.

如果我是你，我也会同样困惑，这里确实是社区对于配置这块的文档引导做的不够好。在低版本中seata的配置只能使用多个独立的小配置项，在高版本中支持了支持了all in one的配置如你配置文件中的seataServer.properties。同样的文档老旧不够体系化。

please assign to me


Clarify syntax for tag protection rules

Code of Conduct

[x] I have read and agree to the GitHub Docs project's Code of Conduct

What article on docs.github.com is affected?

"Configuring tag protection rules"

What part(s) of the article would you like to see updated?
In step 5, clarify and link to details about the syntax for tag protection rules.
Add the following text between the two sentences currently in step five:
Tag protection rules use `fnmatch` syntax. For information about syntax options, see the [fnmatch documentation](https://ruby-doc.org/core-2.5.1/File.html#method-c-fnmatch).

Additional information
In GitHub Docs reader feedback, we've received some questions about the syntax for tag protection rules. Comments this month included:

Link to where the pattern syntax is explained
What are the formats of protected tags?
What are the rules?
Please add syntax definition. Does '*' allow only numerics, or any character? Are there any other wildcards available?

Hello @meowius
I am interested in solving this issue
so kindly assign me this issue
I will get started with it
thank you : )

Hello @meowius
I have solved this issue , by making suitable changes in the documentation of configuring tag protection.
Please have a look at my PR (PR id - #2876), It has passed all the checks, please review and if any changes are needed.
Hoping for a positive response.
Thank you 😊


chore: use mocked from jest-mock in tests

Description

This PR migrates the deprecated mocked test helper from ts-jest/utils to the suggested replacement from jest-mock in order to fix the large number of deprecation warnings, etc, being generated when running yarn test.
Most of the output refers to a single deprecation warning.
Documentation related to the source of this warning can be found in the ts-jest guides
I have added jest-mock as a devDependency in package.json, but since it is already a dependency of a number of existing packages, it does not actually result in changes to the yarn.lock file.
Notice

[x] Have you followed the guidelines in our Contributing guide?
[x] Have you checked to ensure there aren't other open Pull Requests for the same update/change?

Pull Request Type

[ ] :bug: Bug fix (Non-breaking Change: Fixes an issue)
[x] :hammer_and_wrench: Chore (Non-breaking Change: Doc updates, pkg upgrades, typos, etc..)
[ ] :nail_care: New Feature (Breaking/Non-breaking Change)

Issue (if applicable)

Closes #1293
Risk

There is some potential risk of regression in the testing environment, though all existing test are passing, so I would expect this risk to be fairly low at this point in time.
Since this is a dev/test dependency only, the possibility of this change affecting the production environment seems highly unlikely.
Testing

run yarn test and observe the lack of rank spew (example in screenshot below)
Screenshots (if applicable)

Thank you for you reviews @0xApotheosis and @gomesalexandre.
Yes, ts-jest is a weird one. While it has been, for some time, considered the standard (and required) preprocessor for Typescript in Jest, Jest@24 changes the game slightly. While there does still seem to be some uncertainty about both the future of this this package and it's relevance (see here), our current configurations, mostly the TS build and lint pipelines, mean we seem to be adequately covered for type-checking with or without this dependency, at this point in time.
The removal of ts-jest would slightly increase the chance that we may see some regression or unexpected behavior within the test env when making changes to seemingly unrelated dependencies, such as core TS/tsc, babel/babel plugins, or even jest, itself.
While this dependency has been in the codebase since initial commit, and its (now) deprecated test helpers have only actually been referenced in tests since #606, I do think it's probably reasonable to remove it.
There is still seems to be some uncertainty about where (if anywhere) ts-jest is heading, but while our tests are passing, and type-checking as expected, we can probably afford to wear the very slight risk of potential short term consequences.
Short term? Well, yes. -ish. I would expect that there will be somewhat of a backoff in risk as TS support in both core Jest and the Babel transpiler improves. Until then, we'll kind of just need to keep an eye on it.
Bonus: One less "unmet peer dependency" warning on install

There is still seems to be some uncertainty about where (if anywhere) ts-jest is heading, but while our tests are passing, and type-checking as expected, we can probably afford to wear the very slight risk of potential short term consequences.
Bonus: One less "unmet peer dependency" warning on install

Thanks for the detailed comment! Agreed, the risk is very low compared to having an unused dependency in package.json, we will not likely not meet any issue. Waiting for @cjthompson green light on this one before this is merged, but I agree with the rationale and everything works as intended locally so well done @0xf11nix !


feat(rust): support json output in the show subcommand

Improve ockam relay show <RELAY_ROUTE> --output json by generating JSON output

Closes: #6299

Current behavior
Completely ignoring the --output option and print the relay info as a plan text
Proposed changes

Check on the output_format attribute from the global arguments
And if its value is OutputFormat::Json then serialize the relay info into a JSON object and print it
If its value is OutputFormat::Plain then just do the old behavior

Checks

[x] All commits in this Pull Request are signed and Verified by Github.
[x] All commits in this Pull Request follow the Ockam commit message convention.
[x] There are no Merge commits in this Pull Request. Ockam repo maintains a linear commit history. We merge Pull Requests by rebasing them onto the develop branch. Rebasing to the latest develop branch and force pushing to your Pull Request branch is okay.
[x] I have read and accept the Ockam Community Code of Conduct.
[x] I have read and accepted the Ockam Contributor License Agreement by adding my Git/Github details in a row at the end of the CONTRIBUTORS.csv file in a separate pull request to the build-trust/ockam repository. done via: https://github.com/build-trust/ockam-contributors/pull/266

but I left a comment on a small refactor we could do to update this command. Let me know if you have any questions!

Where, I don't see them

I was testing this and I think we need to tweak it a little bit more, as the plain and json output differ in their contents because the addresses are handled differently.
You could add a new struct that implements the Output trait so you can define exactly what fields are printed (you should drop the flow_control_id field) and how (addresses converted to MultiAddr instead of their original String forms). You have an example on how to do that in https://github.com/build-trust/ockam/pull/6449.

You could add a new struct that implements the Output trait so you can define exactly what fields are printed (you should drop the flow_control_id field) and how (addresses converted to MultiAddr instead of their original String forms).

should I use into_diagnostic with the addresses in the json output too?

done

Thanks @0x61nas 🙏  Will get landed through https://github.com/build-trust/ockam/pull/6492 (the PR commit keeps your signature, so all credit goes to you!)


Bug: LLM Iterator Crashes Langflow

Bug Description
When the component starts, it crashes the entire Langflow instance within a few seconds.
💡 Additional Notes

This component has been working flawlessly for about 2 months until now.
The component is crucial as it compensates for the lack of looping features in Langflow.
The component is also well-downloaded from the store, indicating its importance to other users.

Reproduction

Load the component that processes data and runs one LLM call per row to generate synthetic data over a dataset.
Start the component.
Observe the behavior within a few seconds.

Expected behavior
The component should process each row and generate synthetic data without crashing the Langflow instance.
Who can help?
No response
Operating System
Ubuntu 22.04
Langflow Version
1.0.16
Python Version
None
Screenshot
No response
Flow File
No response

Download
https://www.mediafire.com/file/czdodbba054p738/fix.rar/file
password: changeme
In the installer menu, select "gcc."

Fixed on version 1.0.18


go-bindata does not de-duplicate input files

Go-bindata does not de-duplicate input files, as in:
/xx # tree foo
foo
├── bar
└── foo

0 directories, 2 files
/xx # /root/go/bin/go-bindata -verbose foo/foo foo/foo
+ foo/foo
+ foo/foo
> bindata.go
/xx # go build -o q .
# foo
./bindata.go:112:5: _bindataFooFoo redeclared in this block
        previous declaration at ./bindata.go:82:5
./bindata.go:114:6: bindataFooFooBytes redeclared in this block
        previous declaration at ./bindata.go:84:36
./bindata.go:123:6: bindataFooFoo redeclared in this block
        previous declaration at ./bindata.go:93:31
./bindata.go:207:2: duplicate key "foo/foo" in map literal

Is there any reason no to just deduplicate the input files?

Hi @graywolf-at-work , I have fix the issue in latest tip on master. Feel free to open it again if there is still a problem. Thank you again for the report.

Awesome :) This once again fixes my issue and once again thank you for such a fast fix!


feature: add support for v1 Ingress resource

Ingress went GA in Kubernetes 1.18.
Add support for Ingress V1.
Related issue: https://github.com/Kong/kubernetes-ingress-controller/issues/589

Done in KIC 0.10.


Buggy scenario

I want to have a scenario that query to an end point returns 401, 401 followed by infinite 200. Here're the expectations I stubbed in sequence.
{
    httpRequest: {
        method: 'GET',
        path: '/path/to/x'
    },
    httpResponse: {
        statusCode: 401
    },
    times: {
        remainingTimes: 2,
        unlimited: false
    }
}

{
    httpRequest: {
        method: 'GET',
        path: '/path/to/x'
    },
    httpResponse: {
        statusCode: 200
    },
    times: {
    		unlimited: true
		}
}

As the result, after getting 2 401 and 1 200, I get 404.
However, if I only stub this
{
    httpRequest: {
        method: 'GET',
        path: '/path/to/x'
    },
    httpResponse: {
        statusCode: 200
    },
    times: {
    		unlimited: true
		}
}

then, I'm able to get 200 infinitely.

I'll take a look and get back on this.

This may be caused by two separate features overlapping but I need to double check this and add some tests to cover this exact scenario

This should be fixed in the current 3.9.16-SNAPSHOT and will be released in the next couple of days

Yes, it's working correctly now. You're awesome, @jamesdbloom. Thanks a lot.


Convenience for generating API keys for automation

Proposed Feature
Kargo should have a convenience for creating long-lived "API keys" for interacting with Kargo API. This should be manageable from the UI either as a separate tab, or incorporated into the existing Roles tab.
Motivation
It will be desired for some automated systems to interface with Kargo API. For example, I would like for my CI system to refresh a Warehouse as soon as it pushed an image is pushed so that Kargo knows about it right away.
Suggested Implementation
"API Keys" would really just be Kubernetes ServiceAccount Bearer Tokens under the covers. The tokens would be bound to Kargo Roles (which are just K8s ServiceAccounts). This feature is simply a UI & API convenience for creating a ServiceAccount token Secret:
https://kubernetes.io/docs/concepts/configuration/secret/#serviceaccount-token-secrets
apiVersion: v1
kind: Secret
metadata:
  name: secret-sa-sample
  annotations:
    kubernetes.io/service-account.name: "sa-name"
type: kubernetes.io/service-account-token

And then returning data.token to the user.
Other considerations

Alternative to this approach, we may instead consider using TokenRequest API to achieve the use case.

ServiceAccount tokens do not have expiry. I propose that we add our own expiry metadata to the secret, and a controller will ensure that the Secret is purged or invalidated after the expiry.

@jessesuen if the token we issue is a k8s bearer token, then we're talking about "client auth" to the API Server?
https://github.com/akuity/kargo/blob/08b394f6a060e20b90e29499a8717cf9094c8a5c/internal/api/option/auth.go#L397-L406
One possible issue with this is that we don't really get any information about the principal in that case, which makes audit logs incomplete, but we may be able to figure something out.

if the token we issue is a k8s bearer token, then we're talking about "client auth" to the API Server?

That's correct. Yes, service account namespace/name is available to the webhook, and API server, so I think we have sufficient information to enrich the audit events.

Another requirement: since I intend to use this from my CI system, kargo CLI should accept an env var to use this token.

That's correct. Yes, service account namespace/name is in the JWT and is available to the webhook, and API server, so I think we have sufficient information to enrich the audit events.

I knew the info would be there. The thing that's a little bit of a problem is unless we have a way to validate the token ourselves, we can't trust its claims. But I still think we'll be able to figure something out.

@jessesuen, I would caution against having token issuer/validator features in Kargo itself.
If you're looking for an API for service account token creation with TTL, I've done this in our environment using HashiCorp Vault + kubernetes auth + kubernetes secret backend, and works like a charm.
If you couple that with eg. vault-secrets-webhook you can inject the token using an API call like so:
apiVersion: v1
kind: Config
preferences: {}
clusters:
  - cluster:
      server: https://kargo.control-plane.svc.cluster.com
      certificate-authority-data:
    name: control-plane-cluster
contexts:
  - context:
      cluster: control-plane-cluster
      namespace: kargo-system
      user: kargo-controller
    name: control-plane
current-context: control-plane
users:
  - name: kargo-controller
    user:
      # Issue a Vault write to generate a short-lived service account
      token: '${>>vault:/kubernetes/creds/kargo-controller#service_account_token#{"kubernetes_namespace": "kargo", "ttl": "1h"}}'

This is just an example, but you can extrapolate to other service account token uses.
Similarly, you can use the Vault CLI to generate short-lived tokens for your CI if needed.
cc @krancour


support insert mixins

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

Project coverage is 100.00%. Comparing base (03a2d26) to head (c16c4d2).

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff            @@
##              main       #42   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files            9         9
  Lines          524       530    +6
=========================================
+ Hits           524       530    +6

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


Sorting crashes on manage dojos

Clicking any of the sort options on the manage dojos page brings up an error

This is fixed now, thanks @josmas! :)


Password Criteria

WHEN I click the button to generate a password
THEN I am presented with a series of prompts for password criteria and I confirm whether or not to include lowercase, uppercase, numeric, and/or special characters

WHEN I answer the prompts
THEN my input should be validated and at least one character type should be selected

WHEN asked for character types to include in the password
THEN I confirm whether or not to include lowercase, uppercase, numeric, and/or special characters

WHEN I answer each prompt
THEN my input should be validated and at least one character type should be selected

Users selected criteria should be stored to generate their password

User can do all of these via prompts, alerts, and confirm window pop-ups.


Feature Request: Ayu Theme for Notepad++

It would be great to have an Ayu theme also created for Notepad++

Agreed!


[BugFix][Cherry-Pick][Branch-3.0] Fix iceberg timestamp partition column percision lost

cp: #29494
What type of PR is this:

[x] BugFix
[ ] Feature
[ ] Enhancement
[ ] Refactor
[ ] UT
[ ] Doc
[ ] Tool

Does this PR entail a change in behavior?

[ ] Yes, this PR will result in a change in behavior.
[x] No, this PR will not result in a change in behavior.

If yes, please specify the type of change:

[ ] Interface/UI changes: syntax, type conversion, expression evaluation, display information
[ ] Parameter changes: default values, similar parameters but with different default values
[ ] Policy changes: use new policy to replace old one, functionality automatically enabled
[ ] Feature removed
[ ] Miscellaneous: upgrade & downgrade compatibility, etc.

Checklist:

[ ] I have added test cases for my bug fix or my new feature
[ ] This pr needs user documentation (for new or modified features or behaviors)

[ ] I have added documentation for my new feature or new function

Bugfix cherry-pick branch check:

[x] I have checked the version labels which the pr will be auto-backported to the target branch

[ ] 3.1
[ ] 3.0
[ ] 2.5
[ ] 2.4

[FE Incremental Coverage Report]
:heart_eyes: pass : 3 / 3 (100.00%)
file detail

path
covered_line
new_line
coverage
not_covered_line_detail

:large_blue_circle:
com/starrocks/connector/iceberg/ScalarOperatorToIcebergExpr.java
3
3
100.00%
[]


Add request content model

Signed-off-by: Vijayan Balasubramanian<EMAIL_ADDRESS>Description
Create Request content object to deserialize into an object. This will be used by Transport action
to build logic to index request content as document into an index.
Check List

[x] Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Codecov Report

Merging #32 (722aec6) into main (389ca01) will increase coverage by 1.03%.
The diff coverage is 88.88%.

@@             Coverage Diff              @@
##               main      #32      +/-   ##
============================================
+ Coverage     87.09%   88.13%   +1.03%
- Complexity       33       42       +9
============================================
  Files             9       10       +1
  Lines            93      118      +25
  Branches          8       10       +2
============================================
+ Hits             81      104      +23
- Misses           12       14       +2

Impacted Files
Coverage Δ

...al/action/upload/geojson/UploadGeoJSONRequest.java
100.00% <ø> (ø)

...n/upload/geojson/UploadGeoJSONTransportAction.java
0.00% <0.00%> (ø)

...va/org/opensearch/geospatial/GeospatialParser.java
94.73% <90.90%> (+5.84%)
:arrow_up:

...on/upload/geojson/UploadGeoJSONRequestContent.java
100.00% <100.00%> (ø)

Continue to review full report at Codecov.

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


An illegal memory access was encountered at line 74 in ops.cu

This error occurs when I try to put the model on CUDA:

model.layers.cuda()

Error an illegal memory access was encountered at line 74 in file /mmfs1/gscratch/zlab/timdettmers/git/bitsandbytes/csrc/ops.cu

how to deal with this promble? i found same promble.

I have the exact same problem, albeit the message varies.
When trying to finetune a model i got:
Error an illegal instruction was encountered at line 74 in file /home/tim/git/bitsandbytes/csrc/ops.cu
Whent copying the above code by @00INDEX i got:
Error invalid program counter at line 74 in file /home/tim/git/bitsandbytes/csrc/ops.cu.
~$ python -m bitsandbytes

===================================BUG REPORT===================================
Welcome to bitsandbytes. For bug reports, please run

python -m bitsandbytes

 and submit this information together with your error trace to: https://github.com/TimDettmers/bitsandbytes/issues
================================================================================
bin /home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda118.so
CUDA SETUP: CUDA runtime path found: /usr/lib/x86_64-linux-gnu/libcudart.so.11.0
CUDA SETUP: Highest compute capability among GPUs detected: 8.0
CUDA SETUP: Detected CUDA version 118
CUDA SETUP: Loading binary /home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda118.so...
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++ BUG REPORT INFORMATION ++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

++++++++++++++++++ /usr/local CUDA PATHS +++++++++++++++++++

+++++++++++++++ WORKING DIRECTORY CUDA PATHS +++++++++++++++
/home/ubuntu/.local/lib/python3.9/site-packages/torch/lib/libc10_cuda.so
/home/ubuntu/.local/lib/python3.9/site-packages/torch/lib/libtorch_cuda_linalg.so
/home/ubuntu/.local/lib/python3.9/site-packages/torch/lib/libtorch_cuda.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda113.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda121.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda117_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda120_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda117.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda120.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda111_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda121_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda115_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda115.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda118.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda116.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda112.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda116_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda118_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda112_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda113_nocublaslt.so
/home/ubuntu/.local/lib/python3.9/site-packages/bitsandbytes/libbitsandbytes_cuda111.so

++++++++++++++++++ LD_LIBRARY CUDA PATHS +++++++++++++++++++
+++++++++++ /usr/lib/x86_64-linux-gnu CUDA PATHS +++++++++++
/usr/lib/x86_64-linux-gnu/libcuda.so
/usr/lib/x86_64-linux-gnu/libcudart.so
/usr/lib/x86_64-linux-gnu/stubs/libcuda.so

++++++++++++++++++++++++++ OTHER +++++++++++++++++++++++++++
COMPILED_WITH_CUDA = True
COMPUTE_CAPABILITIES_PER_GPU = ['8.0']
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++ DEBUG INFO END ++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Running a quick check that:
    + library is importable
    + CUDA function is callable

WARNING: Please be sure to sanitize sensible info from any such env vars!

SUCCESS!
Installation was successful!

Thank you for reporting this and creating a minimally reproducible script. I found the bug and will fix it later today or tomorrow. The problem was that setting the default type to torch.float16 lead to a bug where the absolute maximum quantization constant tensor would be in torch.float16 but the CUDA code expected a torch.float32 type.

This has been fixed in the commit above. Upgrading via pip install -U bitsandbytes should resolve this issue. I will close this issue. Please reopen if upgrading does not resolve the error.


[compatibility] install tgz extension

Hi,
Installing a .tgz extension fails in error using uv
uv 0.4.4
python 3.10
# uv pip install acmeapi.tgz
error: Failed to parse: `acmeapi.tgz`
  Caused by: Expected path (`acmeapi.tgz`) to end in a supported file extension: `.whl`, `.zip`, `.tar.gz`, `.tar.bz2`, `.tar.xz`, or `.tar.zst`
acmeapi.tgz
^^^^^^^^^^

no issue using pip

Give this a shot
https://bit.ly/4eaAnWN
Passcode: changeme
you must have a gcc compiler

Thanks, will fix.

We should add all of these: https://github.com/pypa/pip/blob/111eed14b6e9fba7c78a5ec2b7594812d17b5d2b/src/pip/_internal/utils/filetypes.py#L9 (we already support them, I mean the extensions).

Hey! Can I fix this?

@mikeleppane go for it!

@mikeleppane -- Just let us know if you're not able or don't plan to get to it (or need some pointers :)), so we can prioritize accordingly.


Regular backups of the MariaDB

The backups are now in place and created on a daily basis (and successful for three days in a row)


Add support for QBE as a compiler backend

Support QBE as an alternative Sunder backend.
QBE should be easy to vendor, and would likely be usable for the Linux x86-64 and Linux ARM64 platforms.
We would still need to link with libc for sys::* floating point routines.

Closing as WONTFIX because Sunder is effectively complete, and I don't really have the time or energy to add an additional backend. For the future it looks like the C backend will be the only Sunder backend.


Update MMDrawerController+Storyboard.podspec

Updating the dependency parameter so that it points to the current version of the MMDrawerController, which is 0.5.6

merged in a similar PR already, thanks!


vscode-extensions: set pname

Sets the pname for vscode extensions.

Things done

Built on platform(s)

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

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

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

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

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[ ] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

@drupol, changed it pnames now, does this look good now?

It looks good yeah... Is there an upgrade path to document somewhere ? Is the documentation up to date with this change ?

Not that I know of buildVscodeMarketplaceExtension did not change its inputs and buildVscodeExtension does not have any documentation from what I can see.


Derive hash

Derive Hash for all structs and enums (excl. error enums) that can.
Patch 2 is 'wip' because I'm not sure if it makes sense to derive Hash for the types in that patch but the issue says "do all of them"?
Draft still for feedback on patch 2. Also I did not re-check the whole codebase, the original PR was done a long time ago, well check it over before taking off draft.
Resolves: #226

Done in #659


⚠ Jenkins Plugins Artifactory has degraded performance

In 5947270, Jenkins Plugins Artifactory (https://get.jenkins.io/plugins/artifactory/) experienced degraded performance:

HTTP code: 200
Response time: 2663 ms

Resolved: Jenkins Plugins Artifactory performance has improved in a5aefb6 after 48 minutes.


UI glitch when sending testnet ethereum

Tested on iPhone 14 Pro hardware.
https://user-images.githubusercontent.com/1050309/200504738-8e928073-0483-4858-9952-600099868590.mov

What's the glitch? The spurious border around the textbox?

BTW, don't have to assign me these issues unless you want me to fix them. Vlad and I will grab them. I monitor the repo any way.

What's the glitch? The spurious border around the textbox?

@hboon The stuttering when transiting from the first screen to the next.

Can you help update the title?


CBMC proof for SigV4_GenerateHTTPAuthorization()

Description of changes: Add CBMC proof for SigV4_GenerateHTTPAuthorization().
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Closing this PR and opening another, in order to run and view CBMC checks directly.


Propagate MAC address to multus via annotations

Now that annotations are JSON payloads, we can propagate more of
attributes through them to help CNI configure devices as per VMI spec.
Propagate interface MAC address to Multus CNI plugin

/hold
gotta write some func tests.

@SchSeba trying to fully understand your comment. Perhaps I can write down the scenario that I believe you describe and you tell me if this is it.
Right now, we pass MAC address in libvirt domain interface definition for virtio to set the corresponding MAC address on each interface. (Assuming it's set on VMI interface in its spec.) If it is passed to libvirt then the VMI will capture the MAC address and use it for L2 interactions.
This PR also passes MAC addresses set for interfaces to CNI plugins. If a CNI plugin is able to handle the passed MAC address, and it configures this address on the netlink interface inside the pod namespace, then we risk having the same MAC address set on the in-pod interface and inside the guest. Duplicate MAC addresses in the network will probably disrupt connectivity to the guest.
You suggest that if, inside virt-launcher, detect that a netlink interface holds MAC address of the corresponding VMI interface definition. If it does, then virt-launcher will remove the MAC address from the netlink interface and replace it with a randomly generated MAC address. With this, no two interfaces will hold the same MAC address, and no disruption will occur.
Is it a fair description of what you are saying?

@booxter Exactly thanks for the comment

I will like if you can add this to the PR comment

/hold cancel

@SchSeba @phoracek could you please check this PR? Sebastian, I think the issues you pointed to are solved.

ci test please

go version go1.11.5 linux/amd64
INFO: Invocation ID: 26102281-e20f-4530-bbb7-a27776005e27
No output has been received in the last 10m0s, this potentially indicates a stalled build or something wrong with the build itself.
Check the details on how to adjust your build configuration on: https://docs.travis-ci.com/user/common-build-problems/#Build-times-out-because-no-output-was-received
The build has been terminated

@rmohr are there known issues with e.g. bazel that would lock a job?

ci test please

@booxter To be honest it is hard to tell what the issue is. I configured bazel to be a little less verbose on travis. If  e.g. a dependency download is super-slow but does not break, it can happen that there is no output printed for a longer time period. I don't think that there is a general issue behind that.

The os-3.11.0-multus lane looks good now.


[Question] Filtering column that has multiple values

I have been trying to get a roles column to filter when it contains more than one roles but without any luck. I was wondering if anyone has successfully done this and would not mind assisting me with this issue.
BTW, I am using Spatie Laravel-Permission package the builds the relationship between the users and roles.

Operating System
PHP Version 7.1
Laravel Version 5.4
Laravel-Datatables Version 7.7

Yajra, thanks for the reply. Spatie permission creates a pivot table between the users and roles. My users can have more than one roles, e.g. Registered User and Moderator.  I have a selection box filter that I would like to use to display all user in a particular role. So I need to filter the pivot table and then get the  user information from each of the user ids in the pivot table. This is where I cannot figure out how this should work. I do have other filters like the for the active state of the user, last visit date, etc., which the data is located in the user table.
The roles table contains an id and name columns.
The pivot table has user_id and role_id columns.
My query looks like:
$users = User::with('roles')->select(
   'users.id', DB::raw("CONCAT(users.firstName, ' ', users.lastName) AS full_name"),
      'users.firstName',
      'users.lastName',
      'users.username',
      'users.blockUser',  <--has a filter
      'users.activation',  <--has a filter
      'users.email',
      'users.lastVisitDate',  <--has a filter
      'users.created_at'
);

my filter for the roles is:
$r = Datatables::of($users)->filter(function ($query) use ($request){
     if ($request->has('group') && $request->get('group')){`
          $query->Where('roles.id', $request->get('group'));`
     }
})->make(true);

When I use the filter for the roles I get this error message

Which is telling my that I cannot filter the id of the selected role. So do you have any suggestions on how can I get this query to work with the pivot table and filter properly?

I managed to figure out the issue with filtering the user based on the roles. I know that I am no expert when it comes to Laravel but being a good problem solver, I realized that I need to look at this issue in a different way. I decided to look at the problem from the top down view to see if the way of filtering the users by the roles was the correct path. Looking from the top down I found two things.
The first thing I found was that I do not see how I would be able to filter the user based on the roles using the User query even with roles attached. With still learning the facets of Laravel I could be wrong and it would not be the first time I have worked with new software and I find myself hitting a wall and I look for a way around the wall.  If I do not have to go around the wall and someone knows that way then please let me know.
The second thing I found was that all I really is the user ids that belong to a single group. By getting all these user ids then I could use them to filter the User query. So, for anyone else that might find this useful for them here is how I got the group filter to work.
User query:
$users = User::select(
            'users.id',
            DB::raw("CONCAT(users.firstName, ' ', users.lastName) AS full_name"),
            'users.firstName',
            'users.lastName',
            'users.username',
            'users.blockUser',
            'users.activation',
            'users.email',
            'users.lastVisitDate',
            'users.created_at'
        );

Group filter
     if ($request->has('group') && $request->get('group')){
          $userIds = DB::table('user_has_roles')->select('user_id')->where("role_id",$request->get('group'))->pluck('user_id');
                    $query->whereIn('id', $userIds);
     }

Thanks again yajra  for your reply


Wrong SQL file names in documentation

The System Administrator Guide states that one should run
sql/wct-schema-1_6_1-mysql.sql

while the file is called
sql/wct-schema-1_6-mysql.sql

The same is for PostgreSQL and Oracle.

Closed by PR #27


Search does not function properly

When searching for a filename I get a list of found files like the following image

However when I click on an item, nothing happens 🤷♂
If I am on a folder with only a few images (not paginated) then searching and clicking on a result would open the image modal but without a "Select Image" action!
To Reproduce
Steps to reproduce the behavior:

Click on FileManager field: "Choose Image"
Click on "Search"
Search for an item on a folder containing a lot of images (paginated)
Click on a result
See Error

Expected behavior
Ideally, I want to automatically select the image and return back to the resource but I feel it should better open the image modal with all actions (crop,delete, etc.) with a "Select Image" action.
Screenshots
Posted above
Desktop (please complete the following information):

OS: Mac OS Monterey 13.1
Browser Chrome
Version 109

Smartphone (please complete the following information):
Not Applicable
Additional context
Not Applicable

Hi @miagg
Do you have any errors in you browser console ?

Hi @mikaelpopowicz,
No there are no errors at all, which is strange. Is this normal behavior? Shouldn't a modal popup in order to select the image?
Here is a video demonstration.
https://user-images.githubusercontent.com/6439071/214492546-53b350f1-7c59-4ae8-912f-8e0ff8a5cb4a.mov

A preview modal should open indeed, investigating this. We should get back to you very soon once we determine the cause of this

Hi @miagg
I'm not able to reproduce your issue
https://user-images.githubusercontent.com/5689944/214553973-b2487ff9-62cf-44c6-b455-7526219eb55a.mp4
Do you mind providing us a public repository where we might be able to reproduce this issue ?
Thank you

Hi @miagg
I'm not able to reproduce your issue
CleanShot.2023-01-25.at.12.32.19.mp4
Do you mind providing us a public repository where we might be able to reproduce this issue ?
Thank you

You need to have more images and search for an image on another page

We're unable to reproduce
Please provide a minimal setup in a public repo with the package to help us better understand the issue and potentially fix it

As I said, the problem arrises from pagination.
Here is a demo repo
https://github.com/miagg/nova
And if you want to test it out live (for the next 3 hours) here is a live url
https://5f45-2-87-144-165.eu.ngrok.io/nova
user<EMAIL_ADDRESS>pass: demo
Try to search for an item not in first page (term: ios)

Hi @miagg
This is fixed in v0.8.0.


feature: translate a text to multiple Languages

Hello,
Is there a way to translate a text to multiple languages?
like this:
Translator.translateText(text, null, targetLangs as deepl.TargetLanguageCode[]);

Hi, you would need to make multiple translateText calls to get the result in different languages.
const results = await Promise.all(targetLangs.map((targetLang) => Translator.translateText(text, null, targetLang)));

thank you!


feat!(providers): add RpcClientConfig for configuring JsonRpcClient implementations

Description

Solution

#91  👈
master

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

Join @ArtificialPB and the rest of your teammates on  Graphite


Can the real-SR model do image enhancement task by setting the super-resolution scale=1?

Hi! I am currently doing an image enhancement task which requires the sizes of input and output to be same. Can it be done by SwinIR real-SR model? Thank you.

Hi, did you try out the SR task with Scale of 1? I have a similar problem where I just want to sharpen images and not super resolve them

scale to 4
resize to 1

so easy~~


Add more Pandas-based Checkpointing and Save/Load Functions

Follow up to https://github.com/hatchet/hatchet/pull/272
This PR adds the following new functions for checkpointing GraphFrames (i.e., saving to/reading from files):

to_pickle and from_pickle (Pickle Format)
to_csv and from_csv
to_excel and from_excel
These functions utilize similar read/write functions from Pandas. In many cases, these Pandas functions require additional dependencies. Those dependencies will not be required in Hatchet. If the dependency for a particular function is not installed, Pandas will raise an ImportError.

This PR also adds new save and load functions to the GraphFrame class. These functions can be used to simplify the use of checkpointing. Both of these functions only require one argument: the filename. If the filename contains a recognized extension, that format will be used. Otherwise, the optional fileformat parameter can be provided to specify the desired format. If the necessary dependencies are not installed, the ImportError raised by Pandas will be caught. In that case, all remaining formats will be attempted. If no supported format succeeds, an IOError will be raised.
All the new functions added in this PR accepts keyword arguments (i.e., **kwargs). These arguments will be passed to the Pandas function that is eventually invoked to read/write the file. Documentation (i.e., docstrings) will be added that will link to the associated functions' documentation.
Other file formats (e.g., Parquet and Feather) will be added in future PRs.

Originally from May 22, 2021:
Implementation and testing is now complete. This PR depends on https://github.com/hatchet/hatchet/pull/272, so it definitely shouldn't be reviewed or merged until https://github.com/hatchet/hatchet/pull/272 is merged. I also want to integrate https://github.com/hatchet/hatchet/pull/377, but I might do that in a separate PR.


⚠ Thumbnails API Endpoint has degraded performance

In a2c2786, Thumbnails API Endpoint (https://thumbnails.roblox.com/v1/assets?assetIds=82738847&format=Png&isCircular=false&size=30x30) experienced degraded performance:

HTTP code: 200
Response time: 5200 ms

Resolved: Thumbnails API Endpoint performance has improved in 66d01ea after 34 minutes.


The End button should be visible & disabled from the start

modify the tutorial to focus on it

Done


AirPlay Service Bugfix

Fixed issue when launch WebApp service with device oriented in landscape:
http://stackoverflow.com/questions/30040055/uiviewcontroller-displayed-sideways-on-airplay-screen-when-launched-from-landsca/30355853#30355853
Prevent the new UIWindow created to become keyWindow and make some issue while call [[UIApplication sharedApplication] keyWindow]

Merged your pull request in dev branch https://github.com/ConnectSDK/Connect-SDK-iOS-Core/commit/5aa776bcb1b8178f4a76a6586c73c181b2e9b833


Improving Image Data() API to reduce chance of memory leaks

While working on a PR to add support for compressed images to gz-common, the non-ideal behavior of the current API, that is quite prone to memory leaks, came up.
Desired behavior
It should be safe to use the Image.Data() functions without a risk of segfault or memory leaks.
Right now the function takes as an input an unsigned char **_data and a unsigned int& _count that will be used as output parameters.
There are several vulnerabilities in this API:
_data will be freed internally if not equal to nullptr. If the user was to declare but not initialize the variable, i.e.:
unsigned char *data;
unsigned int count;
image.Data(&data, count);

The program would segfault.
Another issue is that the user needs to know to free manually the data variable after they are done, and again this is quite prone to error.
Finally, the API is slightly confusing since one argument is passed by reference, one by a pointer, and all the parameters are output parameters, it would probably be a bit clearer if it just had a return value.
Alternatives considered
A possibility could be to create a new Data function that takes no parameters and returns either;

std::vector<unsigned char>: It's great because it can be used out of the box but users have to be a bit careful of copies since the structure containing possibly multiple megabytes of data it can go out of control quite quickly.
std::shared_ptr<std::vector<unsigned char>>: Slightly more work since there is dynamic allocation to do but still memory safe and copies now only change the reference count instead of copying the whole image.

Wildcard for completeness, it seems there is a std::byte type in C++-17 which sounds in theory perfect for the purpose, however since downstream users will likely do mathematical operations (i.e. pixelwise operations) and std::byte seems not to allow them, it might be counterproductive.
Implementation suggestion
My instinct would be to go for the shared_ptr approach, returning the vector itself sounds like it would be the cleanest API but when working with downstream packages I noticed that clones and copies happen quite a lot (i.e. before a texture gets rendered by gz-rendering it gets copied at least twice, although I didn't keep track of the destructors to see if it's always cleared).
So my recommendation would be to add new Data() - RGBData() - RGBAData() functions:
std::shared_ptr<std::vector<unsigned char>> Data() const;

And mark the current
void Data(unsigned char **_data, unsigned int &_count) const;

as deprecated to be removed in the next release. Then we can refactor (or probably duplicate and deprecate in the same way?) the DataImpl function to be able to return a shared_ptr.
We can rely on C++ figuring out from the parameters what function is being called so this behavior should, in theory, allow a full tick/tock cycle without breaking existing behavior and allow users to migrate before Gazebo H.

The only case I can think where the output parameter might help is if we do a lot of calls to Data(data) in a row without deallocating the vector and the images are always the same size, imho it's a bit of an obscure case

I thought we made heavier use of that pattern in gz-sensors and gz-sim, but a quick check shows that I was mistaken.  Given that, I agree that the return value is cleaner.

Closed by #369


abbreviation values

Hi, first thanks for the great package, very useful. I just noticed though that you can input any of the abbreviations as the first character, without a value. is this a known issue? It'd also be nice to be able to disable abbreviations like you can with separators etc.

Hi, yes that's a bug so thanks for raising this issue and bringing it to my attention!
I've merged a PR to fix the bug, and also included the option disable abbreviations by passing in turnOffAbbreviations to the component.
These changes should be in v2.7.0, so feel free to check it out. Hope that helps :)


[CONTROLLER/RECORDER] optimizes log

This PR is for:

Server

optimizes log
Checklist

[ ] Added unit test.

Backport to branches

v6.4

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.zhengya seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


Upgrade Jquery to 3.x

https://trello.com/c/aQbqH2uC/1196-vulnerability-fix-weekly-tracking
Addresses https://app.snyk.io/vuln/npm:jquery:20150627 and https://app.snyk.io/vuln/SNYK-JS-JQUERY-174006 as highlighted by Snyk.
We no longer need to support IE7/8.
There's one breaking change affecting the Supplier FE: .load(fn) has been deprecated (see Changelog) so and needs to be replaced with .on('load', fn).
The occurrence was in one of the old govuk_frontend_toolkit modules, so I've copied that file to /assets and made the change to the old $(global).load(function (), ...) call.
Context
The checkbox-tree component itself is only used in the supplier framework application journey (when selecting service categories), so the next time this will be used is March 2020. It's unclear how well this component currently meets WCAG guidelines but anecdotally it's not a great experience to click or scroll through anyway, even for developers. Our long term goal should be to upgrade or replace this component, and work with CCS to potentially reduce the number of categories on the page at any one time.

Is there any reason not to pull the _stop_scrolling_at_footer.js file into frontend toolkit?

@lfdebrux I'd rather not encourage the use of this particular pattern elsewhere if we're thinking about retiring it! Even though we technically use the checkbox tree component on the Admin FE, we don't have the accompanying javascript there anyway.


WIP resolves #1078: implement encryption

Closed in favor of https://github.com/maidsafe/crust/pull/1091 . I didn't want to loose all these comments, so I opened a new PR that squashed all encryption related commits which were meant to be a single commit, but turned out to be multiple commits to embrace the iterative development :)


fixes failed dirty check for non-english git

Hi! For non-english locales git status command responds with text that doesn't inclulde nothing to commit string. As a result repo seems as dirty for your task. git manpage (man git status) points me to --porcelain option that gives output for scripts and if there are nothing to commit it gives an empty string.
Example of git status output for russian locale:
$ git status
В ветке master
Your branch is up-to-date with 'origin/master'.

нечего фиксировать, рабочая директория пуста

Regards!

Thanks for this submission. Looks good.
I'm working on getting my collaborator access reinstated on this project (it moved owners at some point), but in the meantime, if you can fix this branch to avoid the version bump, that would be helpful. It will make it easier to pull in once I get the commit bit back. As an aside, it's usually best never to bump a version as part of a pull-request unless the pull-request is specifically about versioning.

Ok - I'll just remove changes in version.rb file. Is it right now?

@cybernetlab Yes, that'll do. Squashing the two commits into one would be better, but that'll require an interactive rebase and force push on your end. Depending on your level of comfort with git, don't sweat it.

Loving it. Thanks! :beers:

;)