AsyncReaderWriterLock no longer supports upgradeable reader locks in v5

I use the AsyncReaderWriterLock in AsyncEx v4. I noticed that the release candidate of v5 has removed the UpgradeableReaderLockAsync method. I would like to use v5, but I need upgradeable reader locks. Are there plans to add them back before AsyncEx becomes stable? Thank you for this wonderful library.

No, I am not planning to add upgradeable reader locks to AsyncEx v5.
In my experience, most of the time, developers do not need them (more generally, most users of AsyncReaderWriterLock don't need a reader/writer lock, either). Usually a simple AsyncLock will suffice.

@StephenCleary I'm working on porting from .NET 4.5 to .NET Standard 2.0 and thus, was looking to pull in v5. You mention that AsyncLock is mostly needed by developers instead of the AsyncReaderWriterLock.
Here is my use case of the AsyncReaderWriterLock. I have a Dictionary cache that does a very large volume of reads and a few writes. The AsyncReaderWriterLock was the perfect answer to ensure locking wasn't blocking other readers unless a write was needed. If I understand the usage of AsyncLock you mention, then using it would cause blocking even though no writes were actually happening and thus cause a major bottleneck. Is my understanding of AsyncLock, correct? What pattern or suggestion would you make to solve this problem in v5 of the library?

@radleta why use a lock (and worse, why an async one) to protect a dictionary? Simply use a ConcurrentDictionary. It will be far more efficient than what I think you're trying to do.

@mot256 I apologize I should explain more the problem.
I written an implementation of memory cache that uses reader writer lock per key to ensure no more than one call can update a given key at a time. In our production, we have heavy load on our application and we cannot afford items to have more than one writer due to backend resource limitations.
The flow goes something like the following.

We first try to fetch the item without any locking whatsoever to improve performance.
If item is not found, then we acquire a wrapper instance associated to the key in question which has a ReaderWriterLock (RWL) instance associated. (This is thread safe to ensure we can get one wrapper instance per key.)
The RWL from the wrapper instance is used to aquire an upgradable read lock.
We check again to see whether the item is available and return immediately should it be found.
If not found, then we upgrade the lock to a write lock.
Again we check to ensure the update is needed now that we have a write lock.
If write op is still needed, then write operation is performed followed by releasing the lock.
We then release our locks and clean up.

Opps... So the reason we aren't using just a ConcurrentDictionary is we ran into issues with concurrency and it's optimistic way of handling writes. It's been a couple years since I did the work on it but we ran into its internal limitations based on our requirements. See discussion here.

@radleta the concurrency "issue" with the value factory in ConcurrentDictionary is a classic misunderstood "problem", that simply means your cache is not idempotent. Solve your idempotentcy issue and you'll not (ever) need a RWL. If you cannot solve that, you are infact have an anti-pattern (at least when it comes to caching patterns). In that case I think Redis will be a better fit.

In the case of an in-memory cache, I would recommend the following:

Cache the Task<T> rather than the T. This changes the cache semantics so that an in-progress asynchronous operation is considered a "hit", and the code that hits the cache (a)waits the same task instance as the code that missed.

This has the nice benefit of saving one lock per key, as well as giving you the option to use ConcurrentDictionary instead of Dictionary.
The major disadvantage of this approach is what happens in the case of an error. A naive implementation of this pattern would permanently cache all errors, which is undesirable.
I am planning to add a type specifically to help in creating an async cache (see #91). For now, you can create a cache with similar semantics by caching an AsyncLazy<T> and creating it with the RetryOnFailure flag. So your type would be [Concurrent]Dictionary<TKey, AsyncLazy<TValue>>.

@mot256 Interesting, I didn't realize that was a misunderstanding. I'm curious about what you said about it being an anti-pattern. Source?
I wanted to clarify one point. I mentioned Dictionary. I didn't mean I was storing the items in an actual Dictionary more a Dictionary like implementation. The implementation I was referring is an abstraction that wraps multiple various providers (e.g. Redis, HttpRuntime.Cache, Couchbase, etc.) The abstraction provides a way to coordinate the access to the items and manage the life cycle of the items across providers. They all have the same behavior being that they are treated like a Dictionary with a key/value as the storage.

@StephenCleary Thanks for providing insight into some options to design a cache as mentioned. I'll look into the AsyncLazy as an alternative.
I like the idea of seeing your future implementation of a type specific for cache purposes.
Also, thanks for the library. It's been really helpful in dealing with the async locking issues we've dealt with in our architecture.

@radleta The work I've done so far is more for read caches; let me know if there's something that would specifically help you for a write cache use case.

@mot256 the initialization of concurrentdictionary is very cpu intensive.
if the instance is not lasting or will be thrown using a while and keep creating lots of it. the cpu will keep 100%

For this case, how can I avoid using upgradable read lock?
    public class AsyncCache
    {
        private readonly AsyncLock _mutex = new AsyncLock();
        private readonly ObjectCache _cache = MemoryCache.Default;

        public async Task<T> GetOrSet<T>(Func<Task<T>> valueFactory,
            TimeSpan timeSpan,
            [CallerMemberName] string cacheName = null)
        {
            cacheName = cacheName ?? throw new ArgumentNullException(nameof(cacheName));
            if (_cache.Get(cacheName) is T result)
                return result;

			result = await valueFactory();
			_cache.Set(cacheName, result, DateTimeOffset.Now.Add(timeSpan));
            return result;
        }
    }

I think I should add the lock like this.
    public class AsyncCache
    {
        private readonly AsyncReaderWriterLock _mutex = new AsyncReaderWriterLock();
        private readonly ObjectCache _cache = MemoryCache.Default;

        public async Task<T> GetOrSet<T>(Func<Task<T>> valueFactory,
            TimeSpan timeSpan,
            [CallerMemberName] string cacheName = null)
        {
			using (await _mutex.LockRead())
			{
				cacheName = cacheName ?? throw new ArgumentNullException(nameof(cacheName));
				if (_cache.Get(cacheName) is T result)
					return result;

				using (await _mutex.LockRead())
				{
					result = await valueFactory();
					_cache.Set(cacheName, result, DateTimeOffset.Now.Add(timeSpan));
					return result;
				}
			}
        }
    }

@shtse8 I would say like this:
public class AsyncCache
{
        private readonly AsyncLock _mutex = new AsyncLock();
        private readonly ObjectCache _cache = MemoryCache.Default;

        public async Task<T> GetOrSet<T>(Func<Task<T>> valueFactory,
            TimeSpan timeSpan,
            [CallerMemberName] string cacheName = null)
        {
		using (await _mutex.LockAsync())
		{
			cacheName = cacheName ?? throw new ArgumentNullException(nameof(cacheName));
			if (_cache.Get(cacheName) is T result)
				return result;

			result = await valueFactory();
			_cache.Set(cacheName, result, DateTimeOffset.Now.Add(timeSpan));
			return result;
		}
        }
}

With the old code, you'd have a reader lock held for a very short period of time (literally a dictionary lookup) before it is either released or upgraded to a write lock. The write lock would be held for a very long period of time (async factory). So the reader/writer semantics weren't getting you any benefit: the only way the reader lock would be shared is if another item was requested during the time it takes to do MemoryCache.Get - in other words, practically never.
With the new code, you have lock held either for a very short period of time, or during the async factory if necessary. Should be pretty much the same behavior.

Thanks for your answer.
In my case, the Set may only do once. but Get will be called many times in concurrent although it is short (In fact, looking up a dictionary may be long, it depends on the size). If the lock is held for the whole method, I can't use up all the CPU cores.

How about this? @shtse8
public class AsyncCache
{
    private readonly AsyncReaderWriterLock _mutex = new AsyncReaderWriterLock();
    private readonly ObjectCache _cache = MemoryCache.Default;

    public async Task<T> GetOrSet<T>(Func<Task<T>> valueFactory,
        TimeSpan timeSpan,
        [CallerMemberName] string cacheName = null)
    {
        using (await _mutex.ReaderLockAsync())
        {
            cacheName = cacheName ?? throw new ArgumentNullException(nameof(cacheName));
            if (_cache.Get(cacheName) is T result)
                return result;
        }

        using (await _mutex.WriterLockAsync())
        {
            // perform a read under writer lock, in case other has already update the cache between we release the reader lock and aquire the writer lock
            if (_cache.Get(cacheName) is T result)
                return result;

            // still cache miss,
            result = await valueFactory();
            _cache.Set(cacheName, result, DateTimeOffset.Now.Add(timeSpan));
            return result;
        }
    }
}

Is implementing an upgradeable async lock that you can be confident about its correctness just too difficult?
There are real use cases for it, I just wonder if there's some confusion in the communication.
@wisexp That's exactly the approach I landed on. It's not perfect but it's quite reasonable I think.

Is implementing an upgradeable async lock that you can be confident about its correctness just too difficult?

I don't think so. I implemented it myself with extensive test coverage. https://github.com/timcassell/ProtoPromise/pull/192


fix path to repository

crates.io uses this to render URL in repository page. It is pretty hard to find this repo without it.

I might have to publish these changes to crates.io gonna check that later.

Published it, now the link is fixed.

Thanks 🍻


Error in the printing of the posting date.

Hello, I appreciate the program, it works well.
Notice an error I don't know if it's mine.
twitter_media_downloader.py -f "% date%% tweet_id%% filename%.% ext%" -s orig -u usernn2021 --since 2020-12-1 --until 2022-1-1
result:
2021-04-08<PHONE_NUMBER>008343943 eokxlkuvkae-tho
2021-04-08<PHONE_NUMBER>0 xxx
2021-04-08<PHONE_NUMBER>00xxxx
2021-04-08<PHONE_NUMBER>0xxx same
In my command I pretend that each file, the data in which it was posted is printed, but it only prints the day it started to download, do you know why that happens? What did I do wrong? or does it work like that?

Could it be that you're downloading retweets that have been posted on the same day?
If so, make sure to use %original_date% instead.
If not, can you share such a tweet here so I can investigate?

Are you in Windows  and using cmd/powershell?
It's possible that your shell is replacing %date% by the environment variable DATE, which contains the current date in your locale's format.
Make sure the % is escaped properly in that case. It might be hard in CMD, but you can do something like:
python twitter_media_downloader.py -o out -f "test %date% %filename%.%ext%" -u Twitter

Becomes (note the quotes around the percent):
python twitter_media_downloader.py -o out -f "test "%"date"%" %filename%.%ext%" -u Twitter


Add support for include directive in theme file

Add support for the include directive in the theme file to allow common themes to be combined.
The keys from the include will need to be combined using a deep merge.
I propose something like:
!include 'shared.yml'

A relative path will be resolved relative to the value of the pdf-stylesdir attribute.

How would you describe the role of base-theme.yml compared to this inclusion mechanism?
As of now, the base-theme is only loaded from the default theme directory location. I was looking into using this as my shared base but got rather uncertain when its not loaded dynamically to the user-provided themedir path.

There's an ongoing discussion about support for includes in YAML here:
https://stackoverflow.com/questions/528281/how-can-i-include-an-yaml-file-inside-another
There's a Ruby library that provides an implementation of this functionality (using the extends construct)
https://github.com/entwanderer/yaml_extend

The base theme is just there to provide sane defaults if the custom theme doesn't provide any overrides. In short, it allows Asciidoctor PDF to function.

This became a duplicate of #367 and was resolved in 1.5.0.alpha.18.
See this section in the theming guide for details: https://github.com/asciidoctor/asciidoctor-pdf/blob/master/docs/theming-guide.adoc#keys-extends


Monthly stats and trends should be an evergreen version of Web Almanac queries

Owner: @giancarloaf
Supporters: @rviscomi @tunetheweb
After the data is piped to BigQuery, we currently run a bunch of pre-written queries against it and save the results to GCS to be viewed on the httparchive.org website.
Instead, we want to seed the monthly queries with those used by the 2021 Web Almanac (or more as needed) and run that as an aggregation step after the results have all been written to BigQuery.
This effectively deprecates the generate_reports.sh script and reimplements it using GCP primitives.

"Instead"? So we're retiring the existing queries?
I presumed we were going to keep both? Especially since the existing ones in the BigQuery report are written to allow them to be also run by lens. And also a lot of time series in there that aren't run for the Almanac.

That's what I meant by "or more as needed". We should start over with the Web Almanac queries and add back in anything that's still of use.
Not sure what will become of the lenses. They might become less costly in the new pipeline so we could continue to run every query through them. Or we might want to only use the lenses for specific queries that we know would be interesting.


tekstanalyse pagina (NL) bevat engelse text

I used deepl.com to make a first, draft auto-translation. This still need to be checked. @hennie Could you please take a look? Various gaps in the content also need to filled.

https://beta-di.diginfra.net/beta/tekstanalyse-nl.html
https://beta-di.diginfra.net/beta/text-analysis-en.html


Paths lie outside field and robot moves erratically and spins out of control

Describe the bug
Let me preface by saying that for specific reasons, we use a custom Kinematics calculator instead of SDK, but for all of Pathplanner 2023, we were able to get everything working flawlessly by simply converting the module positions to SwerveModulePositions that were fed into SwerveDriveOdometry. I will also clarify that our odometry works just fine. We are using a NavX for the gyro.
Issue
We made a simple straight-line path upon enabling the robot, the path goes straight outside the field perimeter and the robot goes full speed in that direction. Other times, running the same path, the robot will spin out of control in random elliptical paths. Othertimes, it will merely stay stationary as the angle motors spin out of control. Right after auton, if we switch to telop, the robot runs perfectly without any issues.
Our auton code replicates code from other teams and the example code provided as closely as possible (considering the kinematics changes). We are simply not sure where to even start debugging. Any help would be truly appreciated.
Here is the repository for our current code: https://github.com/frc5417/FRC2024-5788
Here is the repository for our working 2023 code for reference: https://github.com/frc5417/CustomSwerve/
Our DriveBase.java contains most of the methods for supplying the configureHolonomic method while the actual AutoBuilder resides in AutonLoader.java
Versions: (please complete the following information):

OS: Windows 11 and Ubuntu 22.04
GUI Version: [e.g. 2024.1.4]
PPLib Version: [e.g. 2024.2.3]
PPLib Language: [e.g. Java]

Additional context
We have tried hard-setting the omega values to 0 to prevent rotation and tried many ways of resetting the starting odom position. As the robot is erratic and out-of-control during testing, we currently don't have any screenshots or videos, but please let me know if there is any particular information that would help resolve this.

I don't really have the bandwidth to debug other teams' projects, so you are likely better off making a Chief Delphi post or something. But, from a quick look through what really stands out to me is that the module order you are using to give positions to odom is the reverse of the module order that you are using when converting chassis speeds to module states, and actually setting those target states. All of the module orders need to be identical. See here, here, and here

That is an excellent point, I will try that out, and if not, I will post a question on Chief Delphi. Thank you so much!

 You should have them all be in order from 0->3, not 3->0

Well, my odometry works well from 3-->0 since the module order for our custom kinematics is from 0-->3. So all I did was change the module order when finding the SwerveModuleStates to 3-->0 to match our odometry. Is that incorrect?

odometry works well from 3-->0 since the module order for our custom kinematics is from 0-->3

They need to be 0->3 everywhere. Specifically, matching the order that you first create your kinematics with, which is FL, FR, BL, BR here, which I'm assuming is your 0->3 order.

I'm not sure if that's what you were talking about when you said "when i set a starting position".

So I used to set the starting position to something like (2,7) when I constructed odometry but I removed it following the example code and instead checked the "Preset Starting Pose" in PathPlanner GUI to (2,7) but that would cause it to zoom to outer space many times.

They need to be 0->3 everywhere. Specifically, matching the order that you first create your kinematics with, which is FL, FR, BL, BR here, which I'm assuming is your 0->3 order.

So I checked the code, and here is how moduleGroup corresponds to module location:

0 --> FL
1 --> FR
2 --> BL
3 --> BR

Here is how I know: here
This should make a diamond shape for rotating with 0rad being right facing and the wheel only spins in the forward direction(the direction of the vector).
So I need to ensure that my odom also goes from 0-->3 right?

Yes, everywhere that you are doing any sort of module ordering it needs to be from 0->3 so that everything matches.

@mjansen4857 We changed all of our module orders and every single time, the robot followed the path shown on PathPlanner telemetry. The problem still remains that it selects a random path outside the field and goes out forever. Since the robot is consistently following the path shown on telemetry, I seem to believe there might be a deeper rooted issue with our Path generation or execution. What else could we check?

@mjansen4857 Good news! We did end up fixing the issue but we are not entirely sure why it works. We merely set the robotRelativeChassis speed function to return a blank ChassisSpeed and almost everything seems to function. I can imagine that maybe something is being sent wrong or parsed wrong but do you know of any better explanation? It would be better to go to competition knowing the cause and the reason the solution works the way it does.

So you are definitely returning chassis speeds wrong. You might have an infinite or NaN value or something potentially. I wouldn't recommend leaving that at 0 since it would break replanning a little bit if you end up needing it.

What specifically would it break if it is a feature we don't plan on using, we might not look into it. Also, would the rest of the functionality work just fine?


update docs (#1856)

update docs

bug template fix (#1858)

Current dependencies on/for this PR:

master

PR #1876   👈

This stack of pull requests is managed by Graphite.

was already approved, but merged via gh, and sat in another pr.


[MS-Graph] [AAD] [Rest-server] Sync user's group from ms-graph api

Coverage decreased (-5.4%) to 46.049% when pulling 9f0010150fc91af96ff0b5cf6e94c4322f373b70 on yuye/group-msgraph into 37da252408db9c4b944cbf8d24fa67a48e94cab2 on authndev.


feature: [55] Implement pie chart in home page

A pie chart with the volunteers data
https://github.com/daritelska-platforma/frontend/issues/55
Animation not supported from the library yet, expected in the next release (check comments in #55 ). 🤷♂
Screenshots:

@Nikola-Andreev Awesome increment and smooth implementation! Awesome!
Added some patterns and change the color set to more bright one

We might add the animation once the lib is released


Create Setup-CSGO+CS2-Separately.mdx

Created and pushed new guide about how to download and setup CS:GO and CS2 on Steam

Please revise the following:
Reference other guides as well as the style guidelines and styling guide.
Missing hierarchy:
Title
Section headers
Guide Steps
Footer


v10.2.10 ES6/ECMA6 Conversion: PageMgr

Current coverage is 95.45%

Merging #192 into master will not affect coverage as of 3825e6f

@@            master    #192   diff @@
======================================
  Files           26      26
  Stmts          374     374
  Branches         0       0
  Methods         83      83
======================================
  Hit            357     357
  Partial          0       0
  Missed          17      17

Review entire Coverage Diff as of 3825e6f

Powered by Codecov. Updated on successful CI builds.


change string(...) calls to sprint(show, ...)

There are some differences in available methods between string and println. This PR changes calls to string(foo) to sprint(show, foo), which seems to cover more cases. Along the way, there are just a few other minor changes. More specifically,

string(T) => sprint(show, T)
"$v" => sprint(show, v)
println(io, " $op") => println(io, " ", op) (I've read that the latter is usually faster, though I haven't checked this case)
map(string, loop.parent_inputs) => map(s -> sprint(show, s), loop.parent_inputs)

Today I learned the new sprint(show, ...) trick :smile:
Thanks!


Remove cluster [.ssh] key file for cluster/login delete

We need to remove the cluster SSH key file from [~/.ssh] when:

[x] deleting the cluster
[x] deleting the login
[x] uninstalling NeonDESKTOP

FIXED


Naming of pairwise_cosine_similarity isn't accurate in all cases

I was working on a project which depended heavily on the semantics of this function returning cosine similarity. In a somewhat tired state, I misread the documentation and believed that the function was returning distances instead. It took a few hours for me to realize that this function actually does two things depending on the number of arguments after I had spent some time re-generating some of my results.
I am requesting that this not be the case and that a separate function for cosine distance just be implemented, which should be fairly straightforward. I understand the convenience element here of one function handling two different cases of a single tensor and pair of tensors however as it is already so easy to conflate cosine distance versus similarity, I think it should just do one thing rather than anticipate what to do in the case it only receives one array as an argument. I just found it unintuitive given the name of the function is pairwise_cosine_similarity and confusing and I likely wont be the last person to be confused the documentation/semantics of this function.
Thank you!

Hi @wderekjones, thanks for raising this issue.
We modelled our pairwise interface to be identical to scikit-learns: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.cosine_similarity.html, to make sure that users that are coming from numpy/sklearn expects the same format.
I would really like to keep this as one function, but I kind of get the problem you are hinting at. Do you have recommendations for improving the documentation https://torchmetrics.readthedocs.io/en/stable/pairwise/cosine_similarity.html? As far as I can see, we try to make the aware that the function has two "modes" in:

The docstring just below the formula
In the returns section (this could probably be improved)
By having two examples showcasing both modes


Discord? Slack? A place to chat?

Can we have a place to chat?
Slack or Discord would be cool. Then I could annoy you constantly with OAuth2-related stuff.

I'm down, but I'm not volunteering to be a mod/admin or whatever cuz idk how to run those things. Also is Gitter a thing or do people not really use that?

I am OK with gitter.

I think gitter is ok. I also use discord.

I'd prefer Discord or Slack to follow up on discussions.

I will say though that we should use these other tools as an extra thing to look up questions, not solely use discord or Gitter or whatever.
I can’t stand when I read on some projects “for questions, check out our discord”. Which I interpret as “looking up questions isn’t a thing”. Not everyone is gonna wanna make a account just to ask something, some people search in GitHub issues for questions and answers.
Basically, if we move over to discord, it shouldn't be our main tool for questions.

I'd rather use them for longer discussions to keep issues on point, especially when topics are broad. Questions should be asked in these issues sections.

I went a head and created a Discord server.
https://discord.gg/4HTUAcTvqV


Passing a trait object to Rhai-registered function

Hello, I'm trying to make something resembling Singleton Command pattern from the Rhai book, but I actually have multiple Rust-allocated objects, and want to manipulate them from a Rhai script.
One of the parts of my setup is a trait FooTrait and multiple structs Foo1, Foo2, etc. that implement it. Also I have Rhai functions defined in Rust as follows:
rhai_engine.register_fn("make_foo1", move |name: String| {
    Rc::new(RefCell::new(Foo1 { name }))
});
rhai_engine.register_fn("make_foo2", move |name: String| {
    Rc::new(RefCell::new(Foo2 { name }))
});

so that I can produce FooTrait trait objects from a script.
And the difficult part is that I also have a Rust type Bar, which needs to store a vector of FooTrait trait objects, and this vector has to be filled using Rhai method .add_foo(...) that would add a FooTrait object created by one of the make_foo* functions to that vector.
I've implemented this method along the lines of
rhai_engine.register_fn(
            "add_foo",
            move |bar: Rc<RefCell<Bar>>,
                  foo: Rc<RefCell<dyn FooTrait>>| {
                  bar.borrow_mut().add_foo(foo)
            },
        );

but unfortunately when I try to call this method, the script fails to be executed due to the error
ErrorFunctionNotFound("add_foo (alloc::rc::Rc<core::cell::RefCell<Bar>>, alloc::rc::Rc<core::cell::RefCell<Foo1>>)

Unfortunately I have no idea where to go from here, so could you help me with this, please? :)
Thank you!

RefCell<Foo1> is not the same type as RefCell<dyn FooTrait>.  This aspect of Rust is easy to mess up.  Rust does not have polymorphism as per OOP style.
trait Foo: Clone {    // Notice it must be Clone to use with Rhai
    ...
}

type BarObject = Rc<RefCell<Bar>>;
type FooTraitObject = Rc<RefCell<dyn Foo>>;

engine.register_type_with_name::<FooTraitObject>("FooObject")
      .register_type_with_name::<BarObject>("BarObject")
      .register_fn("make_foo1", |name: &str| Rc::new(RefCell::new(Foo1 { name: String::from(name) } as dyn Foo)))
      .register_fn("make_foo2", |name: &str| Rc::new(RefCell::new(Foo2 { name: String::from(name) } as dyn Foo)))
      .register_fn("add_foo", |bar: BarObject, foo: FooTraitObject| ...);

Hi @schungx, thanks a lot for your reply :) And yep, I understand that RefCell<Foo1> cannot be casted to RefCell<dyn FooTrait> since RefCell doesn't provide an indirection, just a borrow counter.
But in my case those refcells are behind Rc's, so I believe that trait object coercion should work, like in the example below (which basically sums up what I'm trying to achieve using Rhai): https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=7172975b8f346c29ef03017702854feb
Thank you!

Unfortunately it won't work the way you want it, because for Rust, RefCell<Foo1> and RefCell<dyn FooTrait> are different types.
Rust's impl Trait syntax allows you to monomorphize different versions of the same overloaded function based on its actual argument type (meaning that add_foo(foo1) and add_foo(foo2) compiles to two separate copies of the function add_foo.
Rhai, due to its dynamic nature, has no such feature.  You must overload by specifying these monomorphized versions separately.
Meaning that you must have both add_foo(Foo1) as well as add_foo(Foo2).  In the backend they may map to the same generic function, which is how it is commonly done with Rhai:
fn add_foo<T: FooTrait>(bar: &mut Bar, foo: T) { ... }

engine.register_fn("add_foo", add_foo::<Foo1>)
      .register_fn("add_foo", add_foo::<Foo2>)
      .register_fn("add_foo", add_foo::<dyn FooTrait>);

Also see: https://rhai.rs/book/rust/generic.html

Thank you for your help, but I believe we're still on different pages :) Since you're talking about monomorphization I believe you're referring to static dispatch, and I'm interested in dynamic dispatch via vtables and dyn Trait (which I demonstrated in the first playground example) - I believe that since I'm receiving not just RefCell<T>, but Rc<RefCell<T>>, I should get the indirection that is required for dynamic type resolution.
Thanks!

Alternatively, if you do it via a plugin module, it is even simpler:
#[export_module]
pub mod FooModule {
    fn add_foo<T: FooTrait>(bar: &mut Bar, foo: T) { ... }

    #[rhai_fn(name = "add_foo"]
    pub fn add_foo1(bar: &mut Bar, foo: Foo1) { add_foo(bar, foo); }

    #[rhai_fn(name = "add_foo"]
    pub fn add_foo2(bar: &mut Bar, foo: Foo2) { add_foo(bar, foo); }

    #[rhai_fn(name = "add_foo"]
    pub fn add_foo_trait(bar: &mut Bar, foo: FooTraitObject) { add_foo(bar, foo); }
}

I believe that since I'm receiving not just RefCell, but Rc<RefCell>, I should get the indirection that is required for dynamic type resolution.

OK, I see you're trying to use a function that takes a trait object.  You must remember there is no automatic coercion for an object (say Foo1) to convert to a trait object (say dyn FooTrait).  You must provide that conversion function (aka the make_trait_object function in my previous comment).
Alternatively, you may simply store everything as trait objects, for example:
engine.register_fn("make_foo1", || Rc::new(RefCell::new(Foo1 { ... } as dyn FooTrait)));

You must remember there is no automatic coercion for an object (say Foo1) to convert to a trait object (say dyn FooTrait).
I might be wrong, but isn't this automatic coercion the thing that happens in the snippet below? :)
impl Bar {
    fn add_foo(&mut self, foo: Rc<RefCell<dyn FooTrait>>) {
        self.foos.push(foo);
    }
...
}
...
let x: Rc<RefCell<Foo1>> = Rc::new(RefCell::new(Foo1("abc")));
let mut bar = Bar { foos: vec![] };
bar.add_foo(x);

Sorry, I mean there is no automatic coercion for Rhai, since Rhai does not internally know about generics or traits...

Ahh, now I get it :)
Thank you very much for your kind help, I'll proceed with one of the ways you've mentioned above.

Try this without Box:
engine.register_type_with_name::<Rc<RefCell<dyn FooTrait>>>("FooTraitObject")
      .register_fn("make_foo1", || Rc::new(RefCell::new(Foo1 { ... })) as Rc<RefCell<dyn FooTrait>>);

Yep, storing trait objects like you've suggested seems to work, thanks a lot for help :)


Initialize go module

Hi @pgollangi! We've just move and renamed the repo - any chance you could reinitialise this PR with the new module name?

Hi @CHTJonas go module updated with latest repo path.


Pick up latest knative.dev/pkg, pipelines, sigstore modules, and k8s 0.22 libs

Looks like I need to provide a real implementation for one of the methods I only stubbed out for the e2e tests to be happy

Alright, hopefully the stub is fixed, but I'm not waiting for it to finish before I head to bed. ✌

/lgtm


User Authentication for Management Center

Is there a user authentication for Management Center for the administrative backend? Background would be that not everybody can make changes on ACL etc.
Best regards
Thomas

Hi Thomas,
yes, we have this on the roadmap. Stay tuned! 😊
Best regards,
Philip

Hi Philip,
thanks for your answer. I had the possibility to test the Management Center and I think it is a very promising product.
I'll stay tuned.
Best regards,
Thomas

A login will be included in the next release. Since today it is already available in the development version.
Username and password can be configured using the CEDALO_MC_USERNAME and CEDALO_MC_PASSWORD environment variables.

Thanks for adding this feature. Looking forward to the release ...


add homeManagerModules

like #223 does for nix-darwin modules, it'd be great to encourage broader sharing of home-manager modules.

I know in the wild there are:

homeManagerModules
homeModules
hmModules

I am not sure if the community ever decided on one way. Anyways, this should probably live as a flake part integration in home-manager? And not in the base flake-parts?

i'm not sure if the community ever settled on one, but homeManagerModules aligns most with the naming conventions elsewhere and is the most explicit.
regardless, i think it's better to have this in flake-parts, so 3rd party flakes don't need to add home-manager as an input when they don't use any other home-manager flake outputs.

Ideally, home manager picks an evalModules class name, and then we can add a generic flake.modules.<class>.<module name> option, to support all the module system applications in one go.
Basically that means to finish

#213

Maybe even add it to the core modules.

Anyways, this should probably live as a flake part integration in home-manager?

That's generally how flake-parts is intended to be extended. Some reasons:

Give control to the authors of that project, so that they are free to manage their "entrypoint" as is right for that project.
Let users pick the integrations they want, without having to fight a built-in module (which could become stagnant).
No unnecessary dependencies or undeclared hardcoded input names. (Nixpkgs is an exception I'd like to get rid of in this regard)

homeManagerModules aligns most with the naming conventions elsewhere

I'd recommend evalModules { class = "homeManager"; } to them then.

better to have this in flake-parts, so 3rd party flakes don't need to add home-manager as an input when they don't use any other home-manager flake outputs.

That would be a fair reason, but I do think the generic solution (#213) is preferable.
Perhaps unrelatedly, a module that sets homeManagerConfigurations should definitely live in the home-manager repo, because that's not as simple, and it requires an actual home manager, which is naturally available there.

oooooh i didn't see #213 - that looks like a much better solution :) thank you!


Extend two monitors is not working

Bug or Regression?
Bug
System Info and Version
Current configuration
monitor = HDMI-A-2, 1920x1080@60, 0x0, 1
monitor = DP-1<EMAIL_ADDRESS>1980x0, 1

Monitors

Description
I tried to replicate the configuration mentioned on Monitors configuration from hyprland but does not work. I do not see nothing on my second monitor, exept for the default message that says "No Signal".
How to reproduce
Copy showed configuration
Crash reports, logs, images, videos
No response

you havent posted systeminfo as requested, so this is invalid.
I am gonna guess nvidia dgpu on a laptop and thus HDMI will not work as it's hardwired to the dgpu without forcing a mux


sticky table headers beta

First pass at sticky table headers.

As a general note - I don't think the table js code belongs in the -site repository. Similar to css - I we need a way to introduce non-base JS in sites that extend from -site - thoughts?

It might make sense as a configuration, but I don't think sticky table headers are an ATF-specific concept

Merging; we can clean up before the end of the sprint


Fixes issue shr-json-export#13: No method of expressing constraint pa…

…ths on inherited fields for Incomplete Values
Adds support for pushing raw path to incompleteValues and consolidating RawPaths when incompleteValues consolidate.
Fixed issue:
https://github.com/standardhealth/shr-json-export/issues/13
(Needs shr-models https://github.com/standardhealth/shr-models/commit/b99720270b40e01a7f85fd5851d31a100cb8f5bb to pass unit tests)

I'm not sure if this is the right approach.  For one, it actually duplicates some info that would need to be untangled during processing.  For example, this fix results in:
{
    "constraints": [
    {
        "type": "ValueSetConstraint",
        "valueset": "http://standardhealthrecord.org/shr/medication/vs/ReasonMedicationNotUsedVS",
        "bindingStrength": "REQUIRED",
        "path": "shr.core.Reason"
    }
    ],
    "type": "Incomplete",
    "rawPath": [
        "NonOccurrenceModifier.Reason"
    ]
}

Notice that the Reason part already exists in the constraint path -- so there is overlap between the raw path and the constraint path.
This can be also seen in the example below, which is a bit more confusing since there are multiple raw paths (2 raw paths and 4 constraints):
{
    "constraints": [
    {
        "type": "CardConstraint",
        "min": 1,
        "max": 1,
        "path": "shr.adverse.AdverseEventGrade"
    },
    {
        "type": "ValueSetConstraint",
        "valueset": "http://standardhealthrecord.org/shr/oncology/vs/ToxicReactionVS",
        "bindingStrength": "REQUIRED",
        "path": "shr.adverse.AdverseEventGrade"
    },
    {
        "type": "CardConstraint",
        "min": 1,
        "max": 1,
        "path": "shr.adverse.CauseCategory"
    },
    {
        "type": "CodeConstraint",
        "code": {
            "label": "null:treatment",
            "type": "Concept",
            "system": null,
            "code": "treatment",
            "url": ""
        },
        "path": "shr.adverse.CauseCategory"
    }
    ],
    "type": "Incomplete",
    "rawPath": [
        "AdverseEvent.AdverseEventGrade",
        "AdverseEvent.CauseCategory"
    ]
}

I think that perhaps what we really need is just for the Identifier, even if complete, to be included in the JSON output.  So the first example becomes:
{
    "constraints": [
    {
        "type": "ValueSetConstraint",
        "valueset": "http://standardhealthrecord.org/shr/medication/vs/ReasonMedicationNotUsedVS",
        "bindingStrength": "REQUIRED",
        "path": "shr.core.Reason"
    }
    ],
    "type": "Incomplete",
    "label": "NonOccurrenceModifier"
}

I think this can be done without needing to change the model or the text-import.  I'll look into it a bit further.  The only question would be how the SSVE handles it.

After seeing your new PR, I agree that your method is the best approach.
Final updated solution:
https://github.com/standardhealth/shr-json-export/pull/16


Add subfolder to the target path when input source has more than one from condition

Expected Behavior
If input resource has more than one from condition, controller should copy output of previous to /workspace/task_resource_name/previous_task_1/ and /workspace/task_resource_name/previous_task_n/
Actual Behavior
The controller will add copy container to copy from PV to /workspace/task_resource_name,
If there are more than one output need to copy, the stuff from outputs will mix together, that's not good behavior

@vincent-pli As #853, I am guessing this issue should be closed too ?

Sure


incompatible types error for t is [1, 2] where readonly t = [1, 2];

Description:
$subject.
public function main() {
    readonly t = [1, 2];
    io:println(t is [1, 2]); // Gives incompatible types: 'readonly' will not be matched to '[1,2,3]'
    io:println(t is readonly & [1, 2]); // prints true
    io:println(t is readonly); // prints true
}

Affected Versions:
2201.0.1

Related to https://github.com/ballerina-platform/ballerina-lang/issues/22785, https://github.com/ballerina-platform/ballerina-lang/issues/24451.

Another sample.
public function main() {
    map<string> m = {"x": "x", "y": "y"};
    error err1 = error("error message 3", g = m);

    io:println(err1.detail() is record {|map<string> g;|}); // Gives incompatible types: 'map<(ballerina/lang.value:0.0.0:Cloneable & readonly)> & readonly' will not be matched to 'record {| map<string> g; |}'
    io:println(err1.detail() is readonly & record {|map<string> g;|}); // prints true
}


Build pipeline

 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.:x: MaheshPesani sign nowYou have signed the CLA already but the status is still pending? Let us recheck it.

Merge


Define units per The Unified Code for Units of Measure

This PR defines the way to unify the indications of units, as well as makes them machine-readable, using The Unified Code for Units of Measure. Fixes #283.

There is of course the unit segment in unicode: http://xahlee.info/comp/unicode_units.html ; but it would be hilariously confusing to end-users to standardize on that only those MUST be used for all specification of units :-)

In addition, this Unicode segment is not exhaustive and unambiguous.

This single line presents a lot of work for the validation in optimade-python-tools.
Is there a reason why it is such a hard requirement? Could it not be a SHOULD or RECOMMENDED instead?

Due to concern for future-proofing this, I was initially about to propose adding a line saying something like this:

Clients MUST treat strings that cannot be interpreted according to The Unified Code for Units of Measure as an unknown but valid unit, and MUST NOT treat this as an unrecoverable validation error.

This means that we could upgrade the standard to a later version (as long as it stays backward compatible) without triggering a backward-incompatible change for us. It seems this would also resolve your woes about validation, since this means any string formally validates.
(I decided against proposing it, because I was worried that I am just complicating the specification without anyone really understanding the purpose, but if you want this also to simplify the validation, perhaps that tips the scale.)
Changing MUST to SHOULD is of course also an option, but is a bit "dangerous" for the attempt to standardize units. I'm pretty sure it will mean everyone puts 'Å' instead of 'Ao'... :-)

This single line presents a lot of work for the validation in optimade-python-tools.

Indeed. However, there is a Python package to validate UCUM units, maybe it could be reused?

Changing MUST to SHOULD is of course also an option, but is a bit "dangerous" for the attempt to standardize units. I'm pretty sure it will mean everyone puts 'Å' instead of 'Ao'... :-)

Precisely. I am afraid that soft requirements will just make the unit field unreliable.

Changing MUST to SHOULD is of course also an option, but is a bit "dangerous" for the attempt to standardize units. I'm pretty sure it will mean everyone puts 'Å' instead of 'Ao'... :-)

It's also just sooo much prettier :star_struck: :sweat_smile:

This single line presents a lot of work for the validation in optimade-python-tools.

Indeed. However, there is a Python package to validate UCUM units, maybe it could be reused?

Great! Let's hope it's up to date and compatible with (or adaptable to) our current setup (i.e., pydantic models).


chore(deps): update ci dependencies

This PR contains the following updates:

Package
Type
Update
Change

common-dev-assets

digest
ede5101 -> a9172e4

terraform-ibm-modules/common-pipeline-assets
action
patch
v1.22.0 -> v1.22.1

Release Notes

terraform-ibm-modules/common-pipeline-assets (terraform-ibm-modules/common-pipeline-assets)
v1.22.1
Compare Source
Bug Fixes

fix permissions required for GH Pages Release pipeline (#684) (d1434dc)

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

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

This PR has been generated by Renovate Bot.

/run pipeline

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

GitHub release
v1.7.0

Your semantic-release bot :package::rocket:


Edit the label of a Manifest

Given a loaded Manifest (e.g., via #58), the user can make a change to it and save the results.
The UI is not so important here, just putting the pieces together.
This is, however, the beginning of the language map widget and we can take a look and see how we want to do that once this is done - the value editor here will be reusable in multiple places.
Acceptance

[x] When a Manifest is loaded, there is some means of selecting that I want to edit the label
[x] When that selection is made, there is some contextual display on the right hand side that lets me edit the Manifest label
[ ] This is not just a text box.

[x] I can specify the language of the string
[x] I can have more than one string
[x] I can have more than one language
[x] The languages are constrained to a list of two-letter language codes, plus the special string none.
[ ] I can put the entries in order

[x] When saved by some other mechanism, the label appears correctly in the serialised manifest.

Notes
We need to experiment with ways of presenting this simply - language maps can look weird if you are just expecting to edit a string.

See latest wireframes for this. It summarises what we discussed yesterday and adds a bit of direction:

Move and delete buttons are hidden by default. They should when the input field is on focus (need to test for accessibility)
Move is on the left and delete on the right of the input field - doubled checked this with other products
Delete icon is a bin rather than a cross which is already use to represent closing.
Language selector is on the left hand side and it's part of the input field - these look connected.


Gate BUILD_SHARED_LIBS behind WIN32 check

It's only checked behind another if (WIN32) check on line 63, so don't present the option on non-win32 platforms.

It looks like setting BUILD_SHARED_LIBS does build the so on Linux and it isn't built otherwise. I believe this is a feature of add_library.


CouchDB 2.1: _users database update handlers always invoked with null first parameter

Expected Behavior
In the latest version of CouchDB, I have a design document in the _users database where I've defined several update handlers to modify user documents. These handlers should either accept an existing document (by providing the ID to the API endpoint) or create a new document (if no ID is supplied).
Current Behavior
In version 2.1.0 of CouchDB, running via the binary on OS X Sierra, these update handlers are always being invoked with null as the first parameter to the function. This happens whether I provide a document ID or not.
Steps to Reproduce (for bugs)

Create a design document test in the _users database with an updates key, and define a function test with the signature function(doc, req)
In the body of the function: return [null, JSON.stringify(doc)]

{
  "_id": "_design/test",
  "updates": {
    "test": "function(doc,req){return [null, JSON.stringify(doc)]}"
  }
}

Invoke the update handler:
curl -X POST http://<admin>:<pass>@<IP_ADDRESS>:5984/_users/_design/test/_update/test/org.couchdb.user:<username>
Note that the response for this function is null, not the document's JSON.

Context
I use these update handlers to modify properties on user accounts on behalf of these users, using middleware, so that I can revoke or grant privileges, etc. It made sense to keep the logic for this within CouchDB itself, rather than embedding the code in my application logic.
Your Environment

Version used: 2.1.0
Browser Name and version: curl / Safari
Operating System and version (desktop or mobile): Apache CouchDB binary running on OS X Sierra

that's not the actual update function, right? returning null for the first item in the response array means no update occurs. If you've only tried making/updating docs this way, then the doc is never created, which explains the null.

Also the _users database has some extra behaviour that might be at play here. Users can only see their own documents in the _users db. though admins should be able to see all docs. I could imagine that the user_ctx is not being passed correctly here?

➜  ~ curl 'foo:bar@localhost:15984/db1/_design/bar' -XPUT -d   '{"updates":{"inc":"function(doc, req) { if (doc) {doc.count++} else {doc = {\"_id\": req.id, \"count\" : 1}}; return [doc, \"yay\"]; }"}}'
{"ok":true,"id":"_design/bar","rev":"1-36845b033830eab695afb0b562f48c0d"}

➜  ~  curl 'foo:bar@localhost:15984/db1/_design/bar/_update/inc/doc1' -XPUT
yay%

➜  ~ curl 'foo:bar@localhost:15984/db1/doc1'
{"_id":"doc1","_rev":"1-74620ecf527d29daaab9c2b465fbce66","count":1}

➜  ~ curl foo:bar@localhost:15984/db1/_design/foo/_update/inc/doc1 -XPUT
yay%
                                                                                ➜  ~ curl 'foo:bar@localhost:15984/db1/doc1'
{"_id":"doc1","_rev":"2-de0ea16f8621cbac506d23a0fbbde08a","count":2}

seems to work in non-system db.

but not in _users. Interesting.

@rnewson No, it's not the actual update function. The one I provided up top was just a simplistic proof-of-concept, to illustrate that the doc itself wasn't being passed into the function. My update function returns [doc, JSON.stringify(responseObj)] unless I deliberately want it to fail with an error.
The reason I crafted the update function the way I did in my sample code was to effectively 'log' the doc param so it could be inspected via curl. In other versions of CouchDB, that update function will respond with the user's document.
Have you been able to reproduce the behaviour I described?

diff --git a/src/chttpd/src/chttpd_show.erl b/src/chttpd/src/chttpd_show.erl
index d8e2ea5c7..ab1013d63 100644
--- a/src/chttpd/src/chttpd_show.erl
+++ b/src/chttpd/src/chttpd_show.erl
@@ -23,7 +23,7 @@
 % then it sends the response from the query server to the http client.

 maybe_open_doc(Db, DocId) ->
-    case fabric:open_doc(Db, DocId, [conflicts]) of
+    case fabric:open_doc(Db, DocId, [conflicts, {user_ctx, Db#db.user_ctx}]) of
     {ok, Doc} ->
         Doc;
     {not_found, _} ->

Is the fix.

heh, already fixed by commit d3c8d41f60f69f92d3a30e408ae9428d88cf604c

and that commit is in 2.1.1 release, we're done. Upgrade pls. :)

Amazing. I was just about to ask if that commit made it into 2.1.1.
This project and its commiters are fantastic. Thanks for the quick investigation and turnaround!


InkBird IBBQ-4T V2

So my IBBQ-4T device gets identified as "inkbird_bbq4t_thermometerv2.yaml" but this is what I get in my temps:

Actual temps on the device are (in F):
Probe1: 76
Probe2: 77
Probe3: 78
Probe4: 77
In Tuya loT under debug I get the following for DP107: xB0AAfYdAAFQHgAB9h0AAQ==
Device Details:
{
  "result": [
    {
      "active_time":<PHONE_NUMBER>,
      "category": "wk",
      "create_time":<PHONE_NUMBER>,
      "custom_name": "",
      "icon": "smart/icon/ay15117410451057cPZi/0dd6cd05c1014f682a4e68fc1ab16.png",
      "id": "##########################",
      "ip": "############",
      "is_online": true,
      "lat": "############",
      "local_key": "#################",
      "lon": "###########",
      "model": "IBBQ-4T  V2.x",
      "name": "IBBQ-4T",
      "product_id": "wavwesi8clrfwx68",
      "product_name": "IBBQ-4T",
      "sub": false,
      "time_zone": "####",
      "update_time":<PHONE_NUMBER>,
      "uuid": "######"
    }
  ],
  "success": true,
  "t": #####,
  "tid": "######"
}

Bug reports need to come with logs or diagnostics.

From what I see in the log under Tuya loT:

12/20/2023   17:41 | Report | 探头温度1 | 4h0AAeIdAAGWHgAB4h0AAQ== | device itself |
-- | -- | -- | -- | -- | --
12/20/2023   17:41 | Report | 探头温度1 | 4h0AAOIdAACCHgAA4h0AAA== | device itself |
12/20/2023   17:40 | Report | 探头温度1 | 4h0AAeIdAAFuHgAB4h0AAQ== | device itself |
12/20/2023   17:40 | Report | 探头温度1 | 4h0AAOIdAABuHgAA9h0AAA== | device itself |
12/20/2023   17:38 | Report | 探头温度1 | 4h0AAfYdAAFuHgAB9h0AAQ== | device itself |
12/20/2023   17:38 | Report | 探头温度1 | 4h0AABQeAABuHgAAFB4AAA== | device itself |
12/20/2023   17:38 | Report | 探头温度1 | 4h0AAfYdAAFuHgABAB4AAQ== | device itself |
12/20/2023   17:38 | Report | 探头温度1 | zh0AAPYdAABuHgAAAB4AAA== | device itself |


Testing default properties

...
      <div className="first-component">
        {this.props.name}
      </div>
...
First.defaultProps = {
   name: 'Carlos'
};

It would be great to have examples for testing default properties.
Out of the box I use:
expect(component.props.children).to.equal('Carlos');
I would expect to test this way instead:
expect(component.props.name).to.equal('Carlos');

Hi @dannymk,
the next version of the generator will feature enzyme, which will make stuff like this much easier to use. This will provide a nicer api for getting and testing props.

Has this been updated?  Is enzyme supported now?
Any examples?

Hi @dannymk,
it is supported in the current beta (npm install -g generator-react-webpack@beta), but currently not implemented in the stable version. We have to wait for webpack-2 to get stable to release it.
We are currently adding some new features (for example adding new components without generating styles, a cssmodule setup etc). Hope we will be able to release soon.
About the enzyme setup: It is not that hard to implement. Have a look at https://github.com/weblogixx/react-webpack-template/blob/2.x/conf/webpack/Test.js#L79 to see how the test webpack config has to be altered. Also, you have to add https://github.com/weblogixx/react-webpack-template/blob/2.x/conf/webpack/Test.js#L15 (externals section) and install the required plugins.

Unfortunately, we will not add support for enzyme and webpack-2 for generator-react-webpack in version 3, you will have to wait for the new generator to arrive. Hope I could help you.

I will have to make due with whatever you guys provide.  I am teaching a local open source development group and really wanted to have these tests done before Monday.  Keeping my fingers crossed that we will have this by the end of the year :-)  Thank you for your feedback.

Hi @dannymk,
you could also go another way and use the generator 4 (beta). I got some projects running with it, it is (nearly) stable, with just a few edge cases (e.g. postCSS setup does not work currently). It has enzyme backed in as default, which makes testing much smoother.
Another possibility would be to use react-addons-testutils. You can see how to test a default prop in the stackoverflow example provided here (also, I did not test it, it should work...): http://stackoverflow.com/questions/30614454/how-to-test-a-prop-update-on-react-component
If you present the generator, it would be nice if you could give us some feedback after your lesson. Things like: What where people missing in the usage etc. Would be really interesting to get some (more) real world feedback :).
Hope this helps!

Well, for one it would be great to have out of the box working examples of actual ES6 components being tested.  Even if it is just one.  I tried about a month ago to give this same presentation and hit all kinds of problems when trying to test default properties.  Also, there is no clear upgrade path for someone using the generator.  Dependencies are broken so examples fail.  Does that help?

Hi @dannymk,
what do you mean when saying there is no clear upgrade path?
For other stuff (like adding react router support, using PostCSS, ...) there will be a Wiki for version 4.0.
I use this generator on a daily basis in a couple of projects, none of them have broken dependencies (at least not in the stable version, we are currently working on the next one that really has some missing deps...). Upgrading should be as simple as:

run npm update
run npm outdated once in a while to have a look if there are new versions of software you may use.
Adjust the semver range for an outdated package and install the current one if you want to (e.g. karma is now version ^1.x, but we still ship ^0.13. Has to do with some problems in karma 1).

Basically, the generator itself just creates your project. It does not have the abilitty to track updates, nor should it to. It is meant to get you started fast and allow you to create new components or even flux stores.
That said, version 4 will be fully backwards compatible to version 3 projects. That is to say your old projects will work exactly like they do now, only new projects will get benefits (e.g. enzyme testing).

OK, this helps.  When and if I run across an actual problem I will report them here.  Thank you for your help and support.


Translate reference/glossary/dynamic-volume-provisioning.md in Korean

This is a Feature Request

What would you like to be added

Translate reference/glossary/dynamic-volume-provisioning.md in Korean
Why is this needed
No translation reference/glossary/dynamic-volume-provisioning.md in Korean
Comments

Page to update : https://kubernetes.io/ko/docs/reference/glossary/?core-object=true#term-dynamicvolumeprovisioning

/language ko
/assign

/triage accepted

/close

/close


How to obtain bitcoin cash

Do anyone know how to claim bitcoin cash in msigna, I Had my BTC's stored in Msigna at the time for the fork?

Gmail
Google+
Web
Photos
more
'bch'
BCH in mSigna
Inbox
M
Mike B
Hi there, I'd like to get my BCH out of my mSigna wallet, can you send me instructions on how to do that? Thanks!
Eric Lombrozo
to Mike
Nov 12Details
Hi Mike.
Instructions:

Sync your vault file using mSIGNA 0.10.6 (or higher)
Make a copy of it
Download our BCH signing tool

Mac: mSIGNA-bch-osx-0.10.7abc.zip mSIGNA-bch-osx-0.10.7abc.sha256.txt
Windows: setup-bch-0.10.7abc.exe setup-bch-0.10.7abc.sha256.txt

Make sure mSIGNA is not running. Install the BCH signing tool.
Run the BCH signing tool and open the copy of the vault file
Click “Send” for the account.
In the dialog box, check “Enable Coin Control”
Select only outputs that predate the fork (August 1st) [for more privacy, do one at a time. for more expediency, select them all at once]
Create a transaction to send all the funds to a BCH wallet, but do not connect to network
Sign transaction
Copy raw signed BCH transaction to clipboard [Export Transaction -> To Clipboard (raw)]
Send it either using viabtc’s online tool: https://pool.viabtc.com/tools/BCH/broadcast/
or by running your own Bitcoin-ABC node in a sandboxed environment and using sendrawtransaction.

Thank you for making this functionality available so we can get the BCH.
I have gone through the process of sending the BCH to a new wallet.
The quickest way to get the actual amount of BCH that is available in you wallet, export all transactions in your account prior to 1 August to a file, then create a new vault with your existing key phrase.
Import the previously exported transactions to the newly created account in the new vault.
Then start the instructions by CodeShark.

I sent bitcoin cash to my msigna bitcoin wallet, is there any way to get these funds?
my balance still shows 0 in msigna, do i need to wait until it reaches the block it was issued on before i can transfer to a bit cash wallet or is there a way to do this now seeing that the transaction has been completed?


Battery percentage reported by the robot is outside of the valid range [0,100] and hence the battery soc will not be updated. It is critical to update the battery soc with a valid battery percentage for task allocation planning.

Before proceeding, is there an existing issue or discussion for this?

[X] I have done a search for similar issues and discussions.

Description
Error/...
Bot : Real Turtlebot3
Distro: Humble
Running Nav2, client , server and RMF..
Getting this issue..
 planning. [full_control-15] [ERROR] [1729862531.098979290] [turtlebot3_fleet_adapter]: Battery percentage reported by the robot is outside of the valid range [0,100] and hence the battery soc will not be updated. It is critical to update the battery soc with a valid battery percentage for task allocation planning. [full_control-15] [ERROR] [1729862531.599059451] [turtlebot3_fleet_adapter]: Battery percentage reported by the robot is outside of the valid range [0,100] and hence the battery soc will not be updated. It is critical to update the battery soc with a valid battery percentage for task allocation planning. [full_control-15] [ERROR] [1729862532.099110259] [turtlebot3_fleet_adapter]: Battery percentage reported by the robot is outside of the valid range [0,100] and hence the battery soc will not be updated. It is critical to update the battery soc with a valid battery percentage for task allocation planning. [full_control-15] [ERROR] [1729862532.599304815] [turtlebot3_fleet_adapter]: Battery percentage reported by the robot is outside of the valid range [0,100] and hence the battery soc will not be updated. It is critical to update the battery soc with a valid battery percentage for task allocation planning. [full_control-15] [ERROR] [1729862533.099170416] [turtlebot3_fleet_adapter]: Battery percentage reported by the robot is outside of the valid range [0,100] and hence the battery soc will not be updated. It is critical to update the battery soc with a valid battery percentage for task allocation planning.
ros2 topic echo /battery_state..
`header:
stamp:
sec:<PHONE_NUMBER>
nanosec: 418551668
frame_id: base_link
voltage: 8.673995018005371
temperature: 25.122230529785156
current: -5.0
charge:<PHONE_NUMBER>0273438
capacity: 110.0
design_capacity: 150.0
percentage: 0.9900000095367432
power_supply_status: 2
power_supply_health: 1
power_supply_technology: 2
present: true
cell_voltage:

8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
cell_temperature:
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
location: SIM-SLOT-1
`

Please help me
ode name: NODE_NAME_UNKNOWN
Node namespace: NODE_NAMESPACE_UNKNOWN
Topic type: sensor_msgs/msg/BatteryState
Endpoint type: PUBLISHER
GID: 01.0f.d3.8e.d0.00.cc.ff.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>.<IP_ADDRESS>
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: VOLATILE
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite
`ros2 node info /turtlebot3_node
/turtlebot3_node
Subscribers:
/cmd_vel: geometry_msgs/msg/Twist
/parameter_events: rcl_interfaces/msg/ParameterEvent
Publishers:
/battery_state: sensor_msgs/msg/BatteryState
/imu: sensor_msgs/msg/Imu
/joint_states: sensor_msgs/msg/JointState
/magnetic_field: sensor_msgs/msg/MagneticField
/parameter_events: rcl_interfaces/msg/ParameterEvent
/rosout: rcl_interfaces/msg/Log
/sensor_state: turtlebot3_msgs/msg/SensorState
Service Servers:
/motor_power: std_srvs/srv/SetBool
/reset: std_srvs/srv/Trigger
/sound: turtlebot3_msgs/srv/Sound
/turtlebot3_node/describe_parameters: rcl_interfaces/srv/DescribeParameters
/turtlebot3_node/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/turtlebot3_node/get_parameters: rcl_interfaces/srv/GetParameters
/turtlebot3_node/list_parameters: rcl_interfaces/srv/ListParameters
/turtlebot3_node/set_parameters: rcl_interfaces/srv/SetParameters
/turtlebot3_node/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Service Clients:
/turtlebot3_node/describe_parameters: rcl_interfaces/srv/DescribeParameters
/turtlebot3_node/get_parameter_types: rcl_interfaces/srv/GetParameterTypes
/turtlebot3_node/get_parameters: rcl_interfaces/srv/GetParameters
/turtlebot3_node/list_parameters: rcl_interfaces/srv/ListParameters
/turtlebot3_node/set_parameters: rcl_interfaces/srv/SetParameters
/turtlebot3_node/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
Action Servers:
Action Clients:
`

Hello! To start off, may I check which fleet adapter you're running? Did you implement one with the latest fleet adapter template that uses the Easy Full Control API, or are you using the legacy full control fleet adapter?
Or perhaps you're using the free fleet adapters available that works with Nav2 clients, they are pretty outdated but there is an open PR that improves the implementation using the Easy Full Control API and zenoh bridge, you might want to check that out.
The next thing to check is whether your fleet adapter is using the correct API for battery state. From your topic echo it seems like percent is rightly within 0 to 100, but could it be possible you're using the another endpoint?

Hi @xiyuoh ...
this is my custom data to the /batter_state..
ros2 topic echo /battery_state..
`header:
stamp:
sec:<PHONE_NUMBER>
nanosec: 418551668
frame_id: base_link
voltage: 8.673995018005371
temperature: 25.122230529785156
current: -5.0
charge:<PHONE_NUMBER>0273438
capacity: 110.0
design_capacity: 150.0
percentage: 0.9900000095367432
power_supply_status: 2
power_supply_health: 1
power_supply_technology: 2
present: true
cell_voltage:
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
8.673995018005371
cell_temperature:
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
25.122230529785156
location: SIM-SLOT-1
But at the same time...
the node ros2 node info /turtlebot3_node
Publishes data to the /battery_state: sensor_msgs/msg/BatteryState .. Percentage value : 45.093489 like that..
How can i handle it..
Actually i doing like this please guide me @xiyuoh

I am bringing up my bot..
launch Nav command with map (ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=$HOME/map.yaml)
started client and server ( robot is registered)
Launch rmf things.. which calling
```
.. >rmf_demos)/include/adapters/turtlebot3_adapter.launch.xml
.. >

```
Please help me @xiyuoh  how can i do openrmf on turtlebot3.


Overall daily quest

Description of new idea or improvement on existing one
Add new config option to enable an overall daily quest limit
Detailed information what should do what and when

There is an option in jobConfig where how many quest can be done in one day, called maxDailyQuests, this does not requires any of option to be added.

But this option is only per Job and not for all jobs

What about if we have a permission jobs.maxquest.3.all, then it would affect for all jobs. Is this better than a new config option?

But this would only apply for active jobs, wouldn't it?
So that there can be x quests active but when a quest is finished the next quest from another job would start?!

No, the quests are still active but that quest can not be completed again at that day. The completed quests not start again when this permission granted to a player, quests will reset at the next day. This permission is for how many quest can be completed in one day for all jobs.

ok, then there is no need for a new config option.
thx!

Is this permission restrictive?
It doesn't work for me

It I understand it correctly, they were just asking what would be the better thing to have, not that it already exists.
Either way, I would greatly appreciate either a permission or a config setting like that. Though the permission might make customization easier (e.g. to give people with a certain rank more quests per day).


fix: bump svm version to v0.3.5

What :computer:

Update svm crate version v0.3.0 -> v0.3.5.
Add error handling to the zkbuild command of the zkforge.

Why :hand:

To support the solc ^0.8.21. You can check the previous list of supported versions here (it is specific for macOs and aarch, but for other variations of OSs and ARCHs the max version is the same). And here is the updated one.
To improve the user experience. Otherwise, it ignores errors and makes debugging impossible.
Fixes #272
Fixes #276

Evidence :camera:

@OmegaTymbJIep please resolve formatting issue.

Hey @OmegaTymbJIep facing this issue currently in any idea when this will be fixed? https://github.com/matter-labs/foundry-zksync/issues/285. I have tried using a local zksolc compiler and pointing to it using the --use flag but to no avail.

The resolution speed is too slow


Int overflow when doing QR decomposition on 1 million rows

This may be out of scope for what jblas was intended for but we are trying to decompose a large matrix (> 1 million rows). When we call Decompose.qr(m) we get the following error
java.lang.NegativeArraySizeException
        at org.jblas.DoubleMatrix.<init>(DoubleMatrix.java:342)
        at org.jblas.DoubleMatrix.eye(DoubleMatrix.java:525)
        at org.jblas.Decompose.qr(Decompose.java:211)

Digging a little bit, this is because it will try can create the eye matrix of size m.rows^2 which will overflow the 32-bit version of Int and try to create a negative sized array.
Is there a 64-bit version we could use that wouldn't face this or is there some better way to get the Q matrix for a matrix of this size? Any help with this would be much appreciated.
If this is out of scope then please feel free to close this ticket.
Thank you in advanced.

Hey, jimlad999!
I think switching to 64bit won't help as well, as the m.row^2 matrix also won't fit into memory (1e6^2 is 1e12 * 8 bytes per double results in about 7500 GB, not speaking of the time it will take to converge. I assume the matrix itself is rectangular? I think you'd probably have to dig deeper into the right algorithm to make this kind of decomposition work.
Hope this helps!

And congrats in being issue #100! ;)

@mikiobraun, thank you for your response.
Yes. It is a rectangular matrix (tall and skinny) with only 3 columns. I kind of figured that the matrix was going to be too big. I will look into other algorithms as you suggested.
Thank you for all you help :)


Hotfix for broken organ transplants

About the PR
Organ transplants not working properly bcuz of my shitcode.
Requirements

[X] I have read and am following the Pull Request and Changelog Guidelines.
[X] I have added media to this PR or it does not require an ingame showcase.

Changelog
:cl: Mocho

fix: Organ transplants now properly heal their values when used in surgeries again.

Summary by CodeRabbit

New Features

Enhanced tracking of organ states and their association with body parts.
Introduced a method to mark organs as used based on damage thresholds.

Bug Fixes

Improved consistency in handling the original body reference during organ addition and removal.

bruh i thought it had organ damage not this giga hack

bruh i thought it had organ damage not this giga hack

AHAHAHAHAHAHAHAHAHAHAH
wyci i will have something for it in the next two weeks


user-info-data in lang.yml not working

in luckperm lang.yml not working, is the name of user-info-data changed or doesn't it work anymore?  you can't modify the message in there anymore

I think the locale key changed.. I will update the master en_US file shortly.
Locale is going to be changing soon anyway, might be best to wait until after that.


sorter(cdc): fix a bug that Pebble sorter can be stucked when closing a processor

What problem does this PR solve?
Issue Number: close #11278
What is changed and how it works?
Fix a bug that Pebble sorter can be stucked when closing a processor.
Check List
Tests

No code

Questions
Will it cause performance regression or break compatibility?
Do you need to update user documentation, design documentation or monitoring documentation?
Release note
None

/retest

/retest


dash-nlp poor handling of banks with few complaints

App name
dash-nlp
Description of bug
Wordcloud fails when run on too few bank complaints
How to replicate the bug
launch app
select a small sample size
select a bank with less than 11 logged complaints
Other notes
We have a fix bundled up with the precomputing effort.

@lundstrj  We will need more detailed information/solution regarding this issue

patched, merged and deployed to playground and gallery.


Gradio Web Demo

easy to use web demo on Huggingface Spaces using Gradio

@AK391 Thanks for your great work! I will merge your pull request later. Before that, I have two questions:
1, There is nearly no information on SwinIR on Huggingface Spaces. People don't know what this repo is and don't know which task it does (denoising or real-world SR?). Would you mind adding similar introduction as follows:
SwinIR achieves state-of-the-art performance on six tasks: image super-resolution (including classical, lightweight and real-world image super-resolution), image denoising (including grayscale and color image denoising) and JPEG compression artifact reduction. See the paper and project page for detailed results. Here, we provide a demo for real-world image SR.
2, You said "or click one of the examples to load them", but I cannot find the example images on https://huggingface.co/spaces/akhaliq/SwinIR.

@JingyunLiang Thanks, I have made the updates suggested here, please see the link https://huggingface.co/spaces/akhaliq/SwinIR

Thanks for your help. I have merged your pull request.


Create component library

Need to create a library of following components on top of shadcn

[x] #14
[x] #15
[x] Input field
[ ] ~Input field secondary~
[x] #12
[ ] #13
[ ] Loading skeletons
[ ] Popups(static/interactive)
[ ] Modals

Completed component and story development for InputField

Deprecated InputField secondary as there is no use for the time being

Completed development of Header, branding, button elements

Completed via #21


wilderness-clan-callouts

A RuneLite Plugin That will automatically type the name of a person you are 'Attacking' Or 'Following' When The Plugin is On and you press the hotkey.

This is auto typing, which is botting and not allowed.


moved image + removed redundant step

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

#sign-off


Hide blocked resources

Hide facebook/linkedin/discord/youtube links in Russia to comply with the laws

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Details

0 of 20 (0.0%)  changed or added relevant lines in 3 files are covered.
4 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.05%) to 5.749%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/components/Pages/About/About.tsx
0
4
0.0%

src/components/Header/Header.tsx
0
8
0.0%

src/hooks/useCookie.ts
0
8
0.0%

Files with Coverage Reduction
New Missed Lines
%

src/components/Header/Header.tsx
2
0.0%

src/components/Pages/About/About.tsx
2
0.0%

Totals

Change from base Build<PHONE_NUMBER>6:
-0.05%

Covered Lines:
159

Relevant Lines:
3071

💛  - Coveralls


.github/CONTRIBUTING.md

Code of Conduct

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

Pre-requisites

[X] My application to the GitHub Technology Partner Program is approved.

Tasks

[X] MUST follow our general contributing guidelines for voice and markup format.
[X] MUST emphasize how the third-party product works with GitHub.
[X] MUST be written in Markdown format, using one of the templates provided.
[X] MUST include the name and URL of the GitHub technology partner responsible for maintenance of the documentation being contributed. This should be added via the contributor.name and contributor.URL properties in the template's YAML frontmatter.
[X] MUST be proposed via a pull request to this repo following the GitHub Flow.
[X] MUST be located in the root of the content folder. Your filename MUST match the GitHub technology partner name, and use the .md file extension.

Pull Request

[X] MUST reference this issue, e.g. via closes [this issue number].
[X] MUST pass the automated CI checks.
[X] MUST include links to supporting material demonstrating the functionality being documented (this can be a link to a public GitHub repo, or a video / screencast walkthrough).

Code of Conduct

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

Pre-requisites

[x]  My application to the GitHub Technology Partner Program is approved.

Tasks

[x]  MUST follow our general contributing guidelines for voice and markup format.
[x]  MUST emphasize how the third-party product works with GitHub.
[x]  MUST be written in Markdown format, using one of the templates provided.
[x]  MUST include the name and URL of the GitHub technology partner responsible for maintenance of the documentation being contributed. This should be added via the contributor.name and contributor.URL properties in the template's YAML frontmatter.
[x]  MUST be proposed via a pull request to this repo following the GitHub Flow.
[x]  MUST be located in the root of the content folder. Your filename MUST match the GitHub technology partner name, and use the .md file extension.

Pull Request

[x]  MUST reference this issue, e.g. via closes [this issue number].
[x]  MUST pass the automated CI checks.
[x]  MUST include links to supporting material demonstrating the functionality being documented (this can be a link to a public GitHub repo, or a video / screencast walkthrough).


Multi region support

This implements support for provisioning stacks in multiple regions. You can target a stack to a specific region using the new per stack region option.
Example
Here's a simple pseudo stack config that shows how one might use this to create some resources in us-west-1, and reference them in us-east-1 with the output lookup.
stacks:
  - name: west/encryption-key
    stack_name: encryption-key
    region: us-west-1
    class_path: stacker_blueprints.kms.Key
    variables:
      KeyAlias: alias/backups

  # You can use the `output` lookup to use an output from a stack in one
  # region, as the input to a stack in another region:
  - name: east/db-backups
    stack_name: db-backups
    class_path: stacker.tests.fixtures.mock_blueprints.Dummy
    variables:
      # Reference the KMS key created in us-west-1!
      EncryptionKeyARN: ${output west/encryption-key}

In the long term, I'm also planning on adding multi account support, aws profiles, but I still think having a region flag on a stack is still valuable for simplicity, and everything in this PR is a pre-req to supporting aws profiles.
Depends on https://github.com/remind101/stacker/pull/550
TODO

[x] Fix --tail (breaks because it doesn't happen within _launch_stack, so it doesn't get the stack specific region applied).
[x] Fix info command

Codecov Report

:exclamation: No coverage uploaded for pull request base (node-names@c8cf7d6). Click here to learn what that means.
The diff coverage is 88.75%.

@@              Coverage Diff              @@
##             node-names     #551   +/-   ##
=============================================
  Coverage              ?   87.41%
=============================================
  Files                 ?       95
  Lines                 ?     6156
  Branches              ?        0
=============================================
  Hits                  ?     5381
  Misses                ?      775
  Partials              ?        0

Impacted Files
Coverage Δ

stacker/actions/diff.py
58.86% <0%> (ø)

stacker/tests/factories.py
97.14% <100%> (ø)

stacker/tests/actions/test_base.py
100% <100%> (ø)

stacker/commands/stacker/__init__.py
95.83% <100%> (ø)

stacker/actions/build.py
92.56% <100%> (ø)

stacker/tests/actions/test_build.py
96.84% <100%> (ø)

stacker/config/__init__.py
92.77% <100%> (ø)

stacker/stack.py
86.36% <100%> (ø)

stacker/tests/providers/aws/test_default.py
99.54% <100%> (ø)

stacker/actions/destroy.py
86% <100%> (ø)

... and 2 more

Continue to review full report at Codecov.

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

Also - should log messages be updated? Particularly debug logs, to include the region?  Maybe not super necessary if we print the stack names themselves.

How do we deal with various s3 connections/buckets

We already talked about this offline, but just to mention it here: since this PR only deals with multi-region, there's no special considerations that need to be taken into account for the stacker bucket; stacker will continue to provision the bucket in the default region.

Anything we need to worry about with hooks/lookups?

Hooks: We could eventually add region support to this in the future, but since we're talking about re-working hooks to be a part of the graph, probably best to hold off on that for now.
Lookups: output just works between multi-region stacks, but there are some special considerations to take into account when using something like xref; if a stack is provisioned in us-west-1, then the xref lookup will also look for the stack in us-west-1.

Also - should log messages be updated? Particularly debug logs, to include the region? Maybe not super necessary if we print the stack names themselves.

This is definitely something I wanted to talk about. At the moment, when we log a step, we log the stack's FQN:
https://github.com/remind101/stacker/blob/b58e01c7281b925311bfad95a20fc68432b57635/stacker/plan.py#L63-L64
This has worked ok for now, since stack FQN's have been unique within a config, but in multi-region that's no longer true. I think we should change it so that the "node name" in the graph is logged:
    def __str__(self):
-        return self.stack.fqn
+        return self.stack.name

That's somewhat of a breaking change (it's just logging to stderr, so not too breaking), but probably necessary.

That's somewhat of a breaking change (it's just logging to stderr, so not too breaking), but probably necessary.

I'm fine with this changing.  We can share on the channel/make sure it's outlined in the CHANGELOG (maybe update that now so we don't lose it).


test: fix mock for useStripe

Summary
change useStripe mock to return functions rather than other hooks
Motivation
My unit test failed on the mock provided from this repo.
In reality useStripe doesn't return 100% all functions listed in the mockFunctions object, but using a superset for the mock should still be fine as TS won't allow calling the functions which are not in the declared in the return value type of useStripe. Returning hooks definitely is not what happens in useStripe.
Testing

[x] I tested this manually
[ ] I added automated tests

No need for automated tests
Documentation

[ ] I have added relevant documentation for my changes.
[x] This PR does not result in any developer-facing changes.

 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.You have signed the CLA already but the status is still pending? Let us recheck it.

Hi @charliecruzan-stripe ,
Can you check this one please? ☝ 🙏


Support for Managed Identities

Definitely open to feedback on this in terms of accepted best practice.
I've updated this script to support Automation Accounts configured to leverage Managed Identities over Run As accounts.  The change shouldn't be breaking as the process is defaulted to us Run As. Also ran formatting on the script.

Fixes #39

Any news on if anyone will ever do anything with issues and PRs in this repo?

@ayoung012
@AnatoliB
any way of getting managed identity merged in or?


Code Actions on Save for a particular source waits for all outstanding code action requests to complete

VSCode Version: Reproduced on Insiders version:

Version: 1.42.0-insider
Commit: be9c72410acc677070685a616773b122f4c5e141
Date: 2020-01-29T05:35:51.712Z

OS Version: OSX 10.14.6

Steps to Reproduce:

Have a project that includes both ESLint, Prettier, and Flow configured in LSP mode, e.g. using extensions:

dbaeumer.vscode-eslint
flowtype.flow-for-vscode
esbenp.prettier-vscode

Configure ESLint with the following option to auto apply fixups on save for eslint diagnostics only:

"editor.codeActionsOnSave": {
  "source.fixAll.eslint": true
}

When saving a file, VS Code sends diagnostics with source: "eslint" to Flow via code actions, and seems to wait for Flow to respond (as a "save participant") before running Prettier. As flow is sometimes slow to respond on large projects, this can be a noticeable delay (1-2 seconds).

The timeline I've assembled from independent logs from ESLint, Flow, and Prettier seem to confirm this. If there is a VS Code log that confirms what is a save participant, I would be happy to collect it and report it here. You can see more details here and here; ESLint takes ~250 ms and Prettier takes ~53ms, leaving over a second of unexplained time that seems to correlate well with slow code action requests to Flow.
The impact to users on an internal repository at my company is that, when Flow is backed up with typechecking changes, VS Code applies Prettier changes ~1-2 seconds after they hit save, which interrupts their flow.
Questions
Is the above design intentional? If so, is there a way to disable sending blocking code actions to certain extensions? I understand that we can configure a 'timeout', but if Flow is slow in the common case, I don't want users to suffer from worst-case save performance.
If this design is intentional, then I expect it to cause many problems like I've described. I think that most implementations of code actions assumed that that request would never block something as time-critical as saving. (As an language server developer for Sorbet, I certainly didn't think code actions would be on a critical editor path!)

Does this issue occur when all extensions are disabled?: The issue is relevant to a VS Code feature that interacts with extensions, so the issue isn't relevant when extensions are disabled.
cc @dbaeumer who asked me to file this as a new issue. :)

@mjbvz (John's colleague here) – we're following up on the Flow side, but I think this issue is more about two things:

Code actions seem to apply serially, in ways which can cause poor user experiences. For example, the "prettier" extension is applying after others, which means that developers wait a second or two before seeing prettier apply (a regression; historically, it applied in under 100ms).

Code actions seem to apply unexpectedly in some cases (eg; Flow when only eslint is configured; it sounds like that's on the Flow extension to fix, but perhaps VS Code could make this behavior more clear).

I think you've mostly been responding to (2), but (1) is the bigger issue here. Does that make sense?
(John, anything to correct/add?)

(Some additional background/research at https://github.com/microsoft/vscode-eslint/issues/833#issuecomment-579508145)

@mjbvz one things I still don't understand is whether VS Code invokes the code action provider on save if an extension has not provided any meta data. I agree that for backwards compatibility we need to call the code action provider for the light bulb but for code actions on save wouldn't it be fair to not invoke them?


Make package architecture

This PR changes the dir structure to follow package convention (e.g. use of inst/) and adds man/ documentation. Currently, devtools::check() passes without errors.

One of the outputs of the workflow is a markdown which I have stored in the inst/ directory. This might be replaced at a later date with knitr calls directly from the plan.
config.yml is ignored by the R build. Taking the approach of the dccvalidator and communicating about the config via documentation.
The initialize.R file is called from the top-level directory which is non-standard. This is how the drake workflow repo is recommended to be structured. I need to consider how to modify this if I wish to wrap the entire drake workflow as a package.
I was recommended by devtools::check() to   Consider adding   importFrom("utils", "type.convert") - I need to research how to import a single function from a package and may want to apply this to other cases.
Maybe need to re-prioritize Imports and Depends in DESCRIPTION. If I understand it correctly, Depends is of highest importance. For this package drake would fall under that level of importance.
I'm returning many Undocumented arguments in documentation object warnings which suggests I may be calling @inheritParams incorrectly.

There are some warnings from devtools::check() that I'm not sure how to deal with:

  boxplot_vars: no visible global function definition for ‘%>%’ I'm not sure the syntax to call the magrittr
  boxplot_vars: no visible global function definition for ‘aes’ Is is redundant to fix this to ggplot2::ggplot(ggplot2::aes(x = x_var, y = value))?
  convert_geneids: no visible binding for global variable ‘ids’ for a tibble column name convert_geneids <- function(count_df) {   geneids <- tibble::tibble(ids = rownames(count_df))

Overall, need to critically consider the approach of wrapping the entire drake workflow as a package. Doing so obscures the workflow steps from the end-user. It may make more sense to build a package for the underlying functions and separately call the workflow.
All that said, the package installed succesfully!
I started to write "This package.. " in the DESCRIPTION then I remembered the unspoken rules.

@karawoo Thanks for your quick response!

Fixed DESCRIPTION.
Fixed @inheritParams.
rlang .data fixed all cases except for 3 that I will address in #42.

The R/packages.R is an artifact of following the drake workflow set-up as recommended. I think it makes sense to remove it as the package itself will take care of loading package dependencies. The recommended structure for drake is R/functions.R, R/packages.R and R/plan.R.
This gets at whether I should wrap the workflow as a package. Right now the workflow is called in  drake_plan in the plan.R file. That is not getting surfaced in the sageseqr package as far as I can tell.

I updated the code based on your suggestions and added initialize.R to the build ignore file. I do think I will wrap the plan as a function and also expose it through documentation (via pkgdown maybe) in case a user wants to manipulate the plan and add steps. There are so many subtle nuances to making a package - thank you for transferring your knowledge!!!


start-machine-learning-in-2020

Thanks so much

Thanks so much

Thank you for your email, I have downloaded the material. Thanks so much I
appreciate.
Best regards
Paragon
On Sun, Jan 17, 2021, 6:17 PM Hesham A. Hassan<EMAIL_ADDRESS>wrote:

Thanks so much
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/louisfb01/start-machine-learning-in-2020/issues/1#issuecomment-761846455,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANARF53ACVBWJV2ZRG2UWB3S2MLRVANCNFSM4WGIHHZA
.

Thank you for your email, I have downloaded the material. Thanks so much I
appreciate.
Best regards
Paragon
On Sun, Jan 17, 2021, 6:17 PM Hesham A. Hassan<EMAIL_ADDRESS>wrote:

Thanks so much
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/louisfb01/start-machine-learning-in-2020/issues/1#issuecomment-761846455,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANARF53ACVBWJV2ZRG2UWB3S2MLRVANCNFSM4WGIHHZA
.

Why can't I open?

Why can't I open?

Click on the title up there

Click on the title up there


How to resolve listOf object type fields?

$postType = new \GraphQL\Type\Definition\ObjectType([
    'name' => 'Post',
    'fields' => [
        'id' => [
            'type' => \GraphQL\Type\Definition\Type::id(),
            'resolve' => function ($objectValue) {
                    // Never gets executed
                      throw new \Exception('executed');
            }
        ],
    ],
]);

$userType = new \GraphQL\Type\Definition\ObjectType([
    'name' => 'User',
    'fields' => [
        'posts' => [
            'type' => \GraphQL\Type\Definition\Type::listOf( $postType ),
            'resolve' => function ($objectValue ,$args, $context, \GraphQL\Type\Definition\ResolveInfo $info) {
                // Trying to return as per docs an array
                return ['items', 'in', 'array'];
            }
        ]
    ]
]);

$queryType = new \GraphQL\Type\Definition\ObjectType([
    'name' => 'Query',
    'fields' => [
        'user' => [
            'type' => $userType,
            'resolve' => function ($objectValue, $args, $context, \GraphQL\Type\Definition\ResolveInfo $info) {
                // Returns something that is used in $userType resolve function
                return \App\Models\User::query();
            }
        ]
    ]
]);

$schema = new \GraphQL\Type\Schema([
        'query' => $queryType,
    ]);

I'm trying to understand how to resolve  \GraphQL\Type\Definition\Type::listOf( $postType )?
My expectation was that resolve function for postType fields would be called.

Ignore me. I have to return an array of fields that should be resolved.


Message responses get truncated for large tool call responses.

UI - 9709bd2f
Steps to reproduce the problem:

Create an agent with sys.read tool.
Read this json file - testme.json
Wait for the response to be streamed fully.
Notice that the response presented to the user is truncated.

Size of the original file:
-rw-r--r--@ 1 sangeethahariharan  staff  175859 Mar 15  2024 /Users/sangeethahariharan/Downloads/testme.json

Size of the  Response received:
-rw-r--r--  1 sangeethahariharan  staff  18797 Sep 26 11:58 response.json

Stack trace file -
LastOutput.json

I am not able to reproduce this in the latest Otto8 code. Moving to "Testing" for verification.


Improve nearest Neighbors check

Replace the double if clause for neighboring check for a more efficient checking algorythm

While testing the nearest neighbor check, i found the problem that the loop already overwrites the cell, so the board is simultanously checking neighbors it is alreay party going to the next generation. We need a temporary board where changes will be marked down on.

Fixed the bug check issue 16


DNS query changes for sync call

Some of the review comments are pushed into into PR and some are left. I will work over that.

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

Can one of the admins verify this patch?

retest this please

@kanchankanchan  we need to merge code again.. We had lot of changes in master branch... src/mme-app/json_config.c file does not exist now.