RFC for adding Sync to io::Error

Rendered
A PR for this has already been written as rust-lang/rust#24133.

This seems to be a sort of general abstraction leakage when using trait objects - there's no way to add bounds to internal trait objects without changing the definition of the type. This is particularly problematic with marker traits: for instance, I can easily see this coming up with Reflect in the future, and it will be technically backwards incompatible to change.

I'm a little hesitant about the motivation here as there seem to be two separate points that are seem to be mixed up a bit:

Having io::Error be Sync
Having io::Error be Clone

The second of these motivations is solved with an Rc, which does have the downside of making it not Send. The first seems to have less motivation once io::Error is Clone. For example it doesn't look like the Sync bound is really desired on io::Error other than to put it in an Arc (e.g. are there use cases to share an io::Error concurrently among threads?).
I would personally prefer to see Sync motivated beyond "to put this in an Arc" as Rc seems to go pretty far.

@alexcrichton The motivation there is "I want to put an io::Error in some other value that itself wants to be Sync". This is a generalization of 'I want to put it in Arc". One example might be some sort of deferred computation (e.g. a future / promise) that wraps a computation returning io::Result<T>. In order to allow for accessing the resulting value without holding a lock, the value needs to be Sync, which means io::Error needs to be Sync.
I don't consider "put it in an Rc" to be an acceptable way to get Clone precisely because it means the containing value is no longer Send.
Also FWIW, I think io::Error really should be Sync based just on the definition of Sync. From the docs:

Types that are not Sync are those that have "interior mutability" in a non-thread-safe way, such as Cell and RefCell in std::cell.

Errors shouldn't have interior mutability (whether thread-safe or not). Calling the various error::Error (or fmt::Debug or fmt::Display) methods on an error should be idempotent. We can't actually guarantee that (as the type could have thread-safe interior mutability), but according to the definition of Sync, the lack of a Sync bound implies interior mutability (rather than the existence of it implying no interior mutability), and that's not something that makes sense for errors.
The only real justification for not having Sync is when the error impl wraps some other value that isn't Sync (typically by having a generic parameter that is instantiated with some non-Sync concrete type). But that should be very rare in practice, and can be handled by adding a custom From impl as necessary in order to convert the error into something suitable for wrapping in io::Error.

Hm, I'm personally still finding it difficult to grasp why we want io::Error to be Sync. It seems like some of the rationale you have is a bit of a red herring maybe?

I want to put an io::Error in some other value that itself wants to be Sync, This is a generalization of 'I want to put it in Arc".

I feel like the generalization in this case is taking it one step too far. The base rationale for this RFC seemed to be a desire to clone an io::Error but it's led into requiring that it have Sync simply for putting it in an Arc, which seems like an odd path to take.

Errors shouldn't have interior mutability (whether thread-safe or not).

As you point out, Mutex can sidestep this, so I don't think that this should be much of a motivation one way or another.

The only real justification for not having Sync is when the error impl wraps some other value that isn't Sync

To me it's also API/implementation detail pollution. We require Send for the clear purpose of sending instances of io::Error across threads, but if we start throwing in traits "because it will apply 99% of the time" then we should have something along the lines of Error + Send + Sync + Reflect + NonManaged + .... There'll need to be a line somewhere in the marker traits implemented here, and I'm trying to grasp which side of the line Sync should be on.
@reem is right in that this is an unfortunate abstraction leakage that we have to deal with this at all, but this is the consequence of using a trait object!

The base rationale for this RFC seemed to be a desire to clone an io::Error

That's my original motivation, yes. But it's not the only reason to want this behavior. Do you not like the future / promise example? A future is a write-once value. If I were to make a Future type, I'd want to have an API that includes something like
enum FutureResult<T,E> {
    Pending,
    Fulfilled(T),
    Rejected(E)
}

impl Future<T,E> {
    fn get(&self) -> FutureResult<&T,&E>;
}

Since it's write-once, once the value has been written, there's no reason to need any kind of synchronization (internally it would probably use a spinlock to control access to the storage, but once it reads that the value has been written, it can release the spinlock and access the fields directly).
More specifically, requiring a Mutex for this case here is completely unnecessary. I shouldn't have to hold a lock in order to access the written data, and I should be able to support concurrent access (either by using Arc or thread::scoped to share it with multiple threads).
But the only way to use this type with E=io::Error (while preserving the Sync bound on FutureResult) is if io::Error is Sync.

We require Send for the clear purpose of sending instances of io::Error across threads

If it's expected for io::Error to be sent across threads, why not let it be shared across threads as well?

but if we start throwing in traits "because it will apply 99% of the time"

That's not the argument I made. My argument was that Sync is defined by what it says about types that don't implement it. If we had a trait NotSync that meant "types that have 'interior mutability' in a non-thread-safe way" (which is a more straightforward definition, but we can't do this because we can't use negative bounds on type parameters), io::Error wouldn't have used it.
When using generics, it makes sense to avoid as many bounds as possible, because each bound further constrains what types can be used with it. But the situation is a bit different with trait objects. By not specifying the Sync bound, io::Error is explicitly opting out of being Sync. And that's very unusual, since nearly all types in Rust are Sync. And because it opts out of being Sync, it forces any type that contains io::Error to also not be Sync (unless the API can be adjusted to use Mutex, but an error-returning API can't do that).
If io::Error requires Sync, any custom error type that isn't Sync can be adapted to work with io::Error with a custom From impl. But if io::Error doesn't require Sync then it outlaws a whole class of otherwise-valid APIs.

Do you not like the future / promise example?

Oh no sorry, I just didn't read it closely enough! This definitely seems like a plausible example.

That's not the argument I made. My argument was that Sync is defined by what it says about types that don't implement it.

Right, but in my mind it's a slippery slope to adding all these trait bounds. I suspect that plausible examples can be contrived for both requiring a marker trait bound as well as requesting that a marker trait bound doesn't exist. For example if I can make an example that means that trait bound X is needed, what's the rationale for not just adding it with the rationale that it likely won't break code in practice?
Largely what I'm getting at is that I just want to make sure that requiring this bound is well motivated beyond "my previous code is no longer compiling", which doesn't sound to be the case. You've proposed some legitimate use cases for requiring Sync.

By not specifying the Sync bound, io::Error is explicitly opting out of being Sync

True, but I think this is a decision that has to be made either way. Types with generics leave the decision up to instantiators, but trait objects either opt-in immediately or opt-out, both of which have pros and cons.

What would be an ergonomic solution to the general problem (abstraction leakage)?  Is there one?  Are there examples of how other languages solve similar problems?

One general solution is to enable dynamic (conditional) upcasting, e.g. from Box<Error> to Box<Error + Send>, but this would require changes to the implementation of trait objects.

That doesn't seem so nice to me; it solves the problem only at runtime cost.
Actually, I just realized we already sort of support a solution to this by parameterizing over the constraint:
use std::error;
use std::io::{self, Write};
use std::thread;

struct Error<C: ?Sized> where C: error::Error {
    inner: Box<C>
}

type CurrentVersionOfIoError = Error<error::Error + Send>;

fn main() {
    write!(vec![], "").map_err( |err| {
        let foo = Error {
            inner: Box::new(err) as Box<error::Error + Send>
        };
        thread::spawn(move || {
            let x = foo.inner.description();
        });
    });
}

Seems awkward to switch to this though, but at least there is a potential solution going forward (I actually had no idea this worked).

@pythonesque that's super interesting, but doesn't work for io::Error since its presence in traits means that it needs to have a fully concrete type anyway.
The idea of trait objects is generally to move type-related activities from compile time to run time, so it seems acceptable to just add more dynamic capabilities to solve this problem.

@pythonesque That's not doable because the whole point of io::Error wrapping custom errors is that it erases the type of the custom error.

@kballard It does erase the type of the custom error.  The type of foo here is Error<error::Error + Send + Sync>, not Error<Foo>.
@reem The point of trait objects is type erasure, sure, but the only where it has to leak into the runtime.  In cases like this, we would still know everything we needed at compile time.  I do see your point though, that this is just moving the problem of what bounds io::Error supports from the type definition to the definitions of the traits that return it, meaning it would still be backwards-incompatible to add new bounds; but couldn't making the type of error for those traits an associated type avoid this problem?  Or would that break object safety in an unacceptable way?

@pythonesque Adding a generic parameter to the type and putting the bounds in there doesn't change anything. You've already recognized that it has the same forwards compatibility hazard (and no, associated types don't solve this), and you're still even using a trait object. In fact, your Error type is pretty much identical to just using Box<error::Error + Send> directly.

@pythonesque associated types do solve this in concrete cases but make generics and trait objects using these traits rather problematic.

@kballard Why don't associated types solve the forward-compatibility problem?  Wouldn't that allow each concrete implementation of these traits to decide which constraint to use?  And can't the Constraint in Box<Constraint> then be made to include more traits backwards-compatibly?

@pythonesque I'm not sure exactly what you're proposing when you say to use associated types. As long as io::Error refers to a specific concrete type (or a particular instantiation of a generic type, as in your code), there's no way to add extra bounds without breaking compatibility. I'm guessing you're thinking of something like different traits returning different instantiations of the generic Error type, but those different instantiations would not be compatible with each other, and would not be compatible with io::Error, which defeats the whole purpose of doing this.
In any case, this is getting rather off-track from the point of this RFC.

@pythonesque fwiw the original Read and Write traits in new io used associated types for the errors, but it causes a large number of problems (e.g. can't copy from a Read with one error to a Write with a different error).

Ah, fair enough :)  Then yeah, I'm in favor of this RFC.

I'm in favor of this RFC. In general, the issue of which marker traits to include when using trait objects is a tricky one, but I think a case like this (where a trait object is being stored in an important, concrete type) should err in the direction of including "standard" markers.
(Over time, we're going to need to develop a more robust policy in std; at the moment, we just don't use trait objects in public APIs very often.)

Thanks again for the RFC @kballard! The feedback here is pretty positive and at this time we've decided to merge this! (my concerns have been addressed)


Describe how to use only one of pattern or type in Node.find_children

I don't know if this is the best way to phrase, but I did have to dig into the code to understand how to properly use Node.find_chlidren with only type and then I spotted the comment here explaining the use of empty values, so thought it was worth mentioning it in the docs somehow.

I don't know if this is necessary anymore after https://github.com/godotengine/godot/pull/68560

If [param type] is not empty, only ancestors inheriting from [param type] are included (see [method Object.is_class]).


add statement about Analysis resources and namespaces

The [https://main.lifecycle.keptn.sh/docs/install/k8s/#how-many-namespaces page includes a statement about options for metrics resources on namespaces.
We need a similar statement about how analysis resources can be. arranged on namespaces.
@bacherfl Please type the info as a comment to this issue then reassign the issue to me and I'll add it to the docs.

Analyses reference AnalysisDefinitions, which can be located in any other namespace. If the namespace is not set explicitly, the Analysis controller will look for the AnalysisDefinition in the same namespace as the Analysis.
AnalysisDefinitions reference one or more AnalysisValueTemplates, which again can reside in any namespace. If the namespace is not set explicitly, the Analysis controller will look for the AnalysisValueTemplates in the same namespace as the Analysis.
This means that e.g. you can have a namespace with all of your AnalysisDefinitions/AnalysisValueTemplates and reuse them in the different namespace where you run the Analyses, or, alternatively, have everything strictly namespaced and always put the AnalysisDefinitions/ValueTemplates and the Analyses into the same namespace, without adding the explicit namespace selectors when creating references between those objects.


Joins are not registering all columns in table

Joins are not registering the second "by" column which prevents more than one join at a time, or joins inside of loops.
spark_version <- "2.1.0"
sc <- spark_connect(master = "local", version = spark_version)

x <- data.frame(a = c(NA,"b","b,","c"), b = 1:4) %>% copy_to(sc,.,'x')
y <- data.frame(c = c("a","b","b,",NA), d = 5:8) %>% copy_to(sc,.,'y')
z <- data.frame(e = c("a","b",NA,"c"), f = 9:12) %>% copy_to(sc,.,'z')

joined <- x %>% full_join(y, by = c("a" = "c"))

full_join(joined,z, by = c("c" = "e"))

Error: by can't contain join column c which is missing from LHS
tbl_vars(joined)

[1] "a" "b" "d"
tbl_vars( joined %>% collect() )

[1] "a" "b" "c" "d"

This is expected behavior, column c is dropped since a is kept in the first join.

Actually, column c is not dropped. Column c is still in the spark table as is shown after the collect() command. Also, whenever there is a value for column c without a match in column a, column a becomes NA. This is not the behavior I would expect if column c is to be dropped. I would expect column a to take the value of column c.

@AndersAsa Weird, I'm unable to reproduce:
> joined
# Source:   lazy query [?? x 3]
# Database: spark_connection
      a     b     d
  <chr> <int> <int>
1     b     2     6
2  <NA>     1    NA
3  <NA>    NA     8
4     a    NA     5
5     c     4    NA
6    b,     3     7
> collect(joined)
# A tibble: 6 x 3
      a     b     d
  <chr> <int> <int>
1     b     2     6
2  <NA>     1    NA
3  <NA>    NA     8
4     a    NA     5
5     c     4    NA
6    b,     3     7

Could you update dplyr + dbplyr and try again?

Thanks, look like this was a problem with older versions of dplyr + dbplyr


New Site -- Quantum Jitter

New Site
NAME: Quantum Jitter
URL: https://www.quantumjitter.com
Description: Bringing data to life in the tidyverse

Thanks @cgoo4  - You site is now live on awesome-blogdown.com 🎉


Worlds won't load.

I've been having issues when using this mod. I try to load into a world, and the game crashes. I know it's this mod, I've tested. I get the error "java.lang.NullPointerException: Cannot invoke "net.minecraft.class_897.method_3933(net.minecraft.class_1297, net.minecraft.class_4604, double, double, double)" because "$$5" is null"

crash report: https://pastebin.com/virdyzXa

There is no 1.19.4 version currently. You are trying to use the 1.19.3 version.

I thought that versions would work as long as they started with the same 1.19 or whatever the first numbers are.

That was the case pre 1.19. But since 1.19.x contains 1.20 updates, and in general, Mojang changing however much they want, each 1.19 update needs its own release.

Ah. Thank you.


Documentation site down

Getting a 404 on https://craco.js.org/

Sorry about that, it was down for a bit earlier today because I made a mistake in the deployment workflow I made. I fixed it shortly after, so everything should be good now.


Empty tests in ExpenseItemInfoActivityTest.

Currently 7 test methods are empty.

I forgot to close this last night


Architecture of components, repetitive code structures, redundant files and inconsistency

Why did we up the complexity of components by so much? Each component seems to have a very similar file / directory structure, not saying much about the components specific implementation.

Why does every component have a generic index.js which only reason seems to be importing and exporting modules again? Why not just make the export default component the index.jsx file?
Why does each 'real' index file have nearly the same behavior without extending from any common parent? The 10 line comment of why you are creating a memoized (its not memorized btw) is copy pasted like 6 times
How are developers supposed to know how to extend the checkout and make their own components? Should we just copy paste an existing component and modify literally every file? Why is it so much work to create a new component?
What is the point of creating component specific contexts / providers and then modifying data from top level contexts before exposing them in the component specific context values.. while then also having component specific hooks to retrieve hand picked data from the top level (App/Cart) contexts as well
Why is a one liner utility function seperated into a file at ./utility/index.js when a multilined useEffect and another anonymous function are fine to be right in the same file (reactapp/src/components/items/components/CartItemsFormManager/CartItemsFormManager.jsx). This is the only place the function is used.
Why is a hook named useItemsFormContext but the context being returned called CartItemFormContext?
Why are some files extensions .jsx and others .js? Even though there is no jsx in many hooks, even these sometimes use the .jsx file extension!

Why does every component have a generic index.js which only reason seems to be importing and exporting modules again? Why not just make the export default component the index.jsx file?

I really like this kind of approach rather than Index.jsx. So an Index.jsx file name does not explicitly tell what really is that component. If we take this approach, then the component name in the definition should be different. That will make the airbnb-react first rule invalid. There will be many Index.jsx files in the codebase and during development, it may be trouble to figure out which is which. We need to check the path to correctly identify the react component. Using index.js and exporting the root component from the directory avoids all these issues. Also, index.js is a perfect place to export the context that comes inside the directory and also other components present in the directory if it is needed outside. This will reduce the length import statements when we refer them outside.

Why does each 'real' index file have nearly the same behavior without extending from any common parent? The 10 line comment of why you are creating a memoized (it's not memorized btw) is copy-pasted like 6 times
The introduction of memorized component is very recent. It currently avoids unwanted re-rendering of all the components when one of the sections is being edited. Why? because we were using the hooks of formik almost everywhere (eg: useFormikContext). So the components using these hooks will be rendered whenever a formik state is altered. That means they will be re-rendered in almost any activity in the checkout. Now, the memoized concept currently being implemented will restrict this rendering section-wise. ie if we do something in the login section, it won't render billing/shipping/cart-items/totals section components, etc. However, it is not a perfect solution as it will re-render components inside a particular section always when some action happens within that section. The granular level of control for the components will make the app really complicated and hence, will be "okay" with the memorization done in the form section levels.

Can you please explain why it fails at the moment?
The 10 line comment is added purposefully in each section if in case a novice person comes to the code base and wonders why we implemented memorization in that way. Since it is an open package, I thought that would be beneficial to developers.
We are preparing the memorized data for each section separately. But for that, there is a custom hook we commonly used in each section to prepare it. Only section-specific changes we are doing in those roots components.

How are developers supposed to know how to extend the checkout and make their own components? Should we just copy paste an existing component and modify literally every file? Why is it so much work to create a new component?

There is no direction for the developer here. This is just a react app and they can code as they wish, alter existing components as needed. Maybe we can provide some "good practices" that make life easier through the doc. tbh, I am not really getting what do you mean by the excess work for creating new component. Could you please elaborate?

What is the point of creating component specific contexts / providers and then modifying data from top level contexts before exposing them in the component specific context values.. while then also having component specific hooks to retrieve hand picked data from the top level (App/Cart) contexts as well

This is an architectural decision we have taken initially. We have basically three global states. App, Cart, and Form. All these global states are implemented with the Context concept in react. The App & Cart context is pure global data. Hence they can be accessed in any component using useContext. But the Form global state is constituted by form sections. The form sections are Login, Billing, Shipping, Shipping Method, Payment Method, Cart items, Totals, etc. Each form section defines its form states and validation rules for these states. They will register themself as a "form section" so that the global Form context will know about these sections and grab their states and validation rules and thus constitute the global Form context. Now the components can now fetch these states using formik hooks. Normally it won't be necessary to access the entire form data because most of the time, they just need to deal with form-section specific data. This kind of architecture gives great flexibility since it is now very easy to remove an individual form-section entirely from the app without much hassle. We will get better control on states and thus dealing with them inside the component will be easier once we get the concept.
Initially, to get the App, Cart context, we were using common custom hooks such as useAppContext and useCartContext. But as the app grows, these custom hooks will also grow. Since we are going to use these common custom hooks in most of the components, they will become expensive and calculating unwanted data when we think at the component level. So we changed this approach and now we will be defining custom hooks for each form section. So the data that comes from those custom hooks are form-section specific and the data computation is more specific to that section which eventually leads to fewer computations for the entire app. Also, the data is now exclusive to that section which means it is very easy to remove that logic if we want to decouple a form section from the entire app.
Basically dividing the big checkout form into smaller form units gives more control in every aspect. The downside is some of the logic will be repeated in each section. But, that is just fine when we compare the benefits they provide.

Why is a one liner utility function separated into a file at ./utility/index.js when a multilined useEffect and another anonymous function are fine to be right in the same file (reactapp/src/components/items/components/CartItemsFormManager/CartItemsFormManager.jsx). This is the only place the function is used.

I think you are talking about the utility function prepareCartItemsUniqueId. Yes, it is just a one-liner code cartItems.map(({ id, quantity }) => ${id}_${quantity}).join('__'). It loops through the cart item and preparing a unique id based on the id and quantity. Now, which is more readable for a developer here? I think explicitly telling them prepareCartItemsUniqueId is more readable and easy to follow up rather than doing the computation directly inside the component. Also, the logic here has the potential to be used in some other components too. It didn't happen till yet. I like to do such namings to such computations and believe such changes do make a big difference in terms of code readability and utility. This is why there is a shortcut_isArray() which essentially using Array.isArray inside it to verify the parameter is an array or not. It may be a small change, but essentially improves the readability and make code compact. So I believe a utility function is not necessarily being used several times in different components but can be used only once in a single component as long as it improves the code maintenance and readability.

Why is a hook named useItemsFormContext but the context being returned called CartItemFormContext?

Makes sense. The hook name can be better here;

Why are some files extensions .jsx and others .js? Even though there is no jsx in many hooks, even these sometimes use the .jsx file extension!

As per the Airbnb coding standard, the react components should be defined with .jsx and all other files should be .js. So this mixing up of file extension is a mistake and it should be corrected. 👍

Hooks extension change from .jsx to .js is done and available #184 . Considering this for next major release 1.1.0


[3.9.2] Browser specific types are deleted

TypeScript Version:  3.9.2

Search Terms:
webkitDisplayingFullscreen
webkitSupportsFullscreen
webkitExitFullScreen
webkitExitFullscreen
Code
videoElement.webkitExitFullscreen()

Expected behavior:
Should compile like in the previous versions of TypeScript
Actual behavior:
Types are gone because the were deleted with commit 065a996345fcfafd3c744d2a724a1ae9f31f9ab0
Personally it makes totally sense to me to have only types that are standard spec compatible. But what bothers me is that the types were there before 3.9 and nothing was mentioned in the changelog. So was this deletion intended? Or is this some kind of "bug" (unintended)?
Playground Link:
Related Issues:

Reference PR (which removed these types): https://github.com/microsoft/TSJS-lib-generator/pull/802
It was apparently intended, but wasn't documented in the announcement.

Do you know if there is an alternative type definition at definitely typed that I can use? I didn't found something unfortunately.

You can pick types that you need from 3.8 and use same approach recommended for 3.1 lib.dom.d.ts changes.
https://github.com/microsoft/TypeScript/wiki/Breaking-Changes#some-vendor-specific-types-are-removed-from-libdts

Yes but shouldn't this be mentioned somewhere as a breaking change in the release notes?

Yeah, agreed - I'll add it to the ones on the site

👍

Shipped in https://github.com/microsoft/TypeScript-Website/commit/5bfa51c4e30ac967f4feb513486f0238c565aeec and in the handbook for the prod site

Awesome. Thanks a lot!


Bugfix when last-cache == Cygwin root dir

This aims to fix the following error whenever find-workspace is needed :
mkdir: could not create directory "//http%3a%2f%2fftp.snt.utwente.nl%2fpub%2fsoftware%2fcygwin%2f": Read-only file system
apt-cyg: line 149 : cd: //http%3a%2f%2fftp.snt.utwente.nl%2fpub%2fsoftware%2fcygwin%2f/x86: No such file or directory

Notice the // at the beginning of "$cache/$mirrordir/$arch" because cache=/.

Closing this: this patch was needed on an older version of apt-cyg, but with the latest version there is no such bug


"Teleorman" county is listed in the drop-down menu

Description:
"Teleorman" county appears in the drop-down menu list alongside the rest of the counties in Romania according to law
Precondition:
The website is up an running.

Step 1
Click on the search bar.

Expected results
The counties list appears in the drop-down menu.

Step 2
Scroll down the list

Expected results
The county appears in the drop-down menu as "Teleorman".


Fix vehicle item type override

Cleans up item type override code and adds entry for vehicles
Resolves #90

Maybe hoist that into a helper function? Feels like it breaks up the flow of the json parsing loops, visually.

Should be prettier now


presto MAP‘s results panel is blank

system: win10
dbeaverVersion: 22.0
presto map‘s results panel is blank. but It work in Dbeave 21.2.5;

Hello @pengwanli
Can you provide more info, please?
What Presto database version do you use? What driver do you use?
Can you provide screenshots or a video of this issue?
Maybe you can find some helpful info on our wiki page: https://github.com/dbeaver/dbeaver/wiki/Working-with-Spatial-GIS-data

this
Presto Version:  presto-jdbc-0.270.jar
DBversion: 22.0.0
The panel cannot parse the map structure data of presto.

Could you please send the log files? You can find instructions here: https://dbeaver.com/docs/wiki/Log-files/. Thank you.

There has been no update on the issue for a long time. If it is still actual for you - feel free to reopen it with additional info


fixed https://github.com/tmbdev/ocropy/issues/251

I looks as if pylab.find and np.where work slightly different.

https://github.com/tmbdev/ocropy/commit/a154e6360cd8#diff-0e349d933e2d87621d932d2ae80cf70aL272

Please do not start using the pylab interface again.

Thanks for reporting and sorry for the regression.
IIUC, pylab.find does this:
def find(condition):
    "Return the indices where ravel(condition) is true"
    res, = np.nonzero(np.ravel(condition))
    return res

Does s,np.find/np.nonzero(np.ravel, fix the issue?

Yes, it also works without pylab.

LGTM, thank you.
@zuphilip In https://github.com/tmbdev/ocropy/commit/a154e6360cd8e15c8c7cd5c2ce225c0ebed9d424 this was the only place where pylab.find was replaced by np.where, right?
@jze If you provide the source images and CLI invocation, we could add a test to prevent this kind of error in the future

In a154e63 this was the only place where pylab.find was replaced by np.where, right?

Yes.

Merged. Thank you very much @jze for the work and everybody here for the discussion!


Use webview's page-favicon-updated for getting the favicon

Fixes https://github.com/mozilla/tofino/issues/1098
Depends on https://github.com/mozilla/tofino/pull/1097
Signed-off-by: Victor Porof<EMAIL_ADDRESS>This dependency graph might help:

Coverage decreased (-0.3%) to 34.674% when pulling c52e05b8cd14dd2444bcf0ebd7dfe06b454d2244 on victorporof:webview-favicon into e5af840dd03e092b03e20d1d39913e4e2b4176bd on mozilla:master.

👍


[BUG]CMS components -'Three columns, boxed' the pictures are not shown in the right places

Describe the bug
Block category 'Images' - 'Three columns, boxed' the pictures are shown one after another instead of in three columns.
How to reproduce
Steps to reproduce the behavior:

Go to 'categories' from Shopware
Select 'Clothing'-'Movies & Toys' from category structure
Go to 'Layout assignment'
Click 'Edit in designer' button
Click 'Settings' icon
Click 'block' icon
Select block category 'Images'
Add 'Three columns, boxed'
Click 'Save' button in the upper right corner
Go to subcategory 'Movies & Toys' on our website
See the error

Expected behavior
Pictures should be displayed in three columns and look the same as in Shopware layout.
Actual behavior
Pictures are displayed in wrong places - one under another.
Screenshots
'Three columns, boxed' block in Shopware 'Shopping Experiences' layout:

'Three columns, boxed' block on the website looks like this:

Devices (please complete the following information):
All devices

It is related to #509 and it will be resolved there


Issues filter not working for parts of the words

Description
When you search for issues, filter should work as SQL LIKE query "%query%" for issue title and description. Currenty in order to find anything you have to type the whole word. Otherwise, unless you know the whole word (in singular o plural) the search is pretty useless.
Gitea Version
trunk
Can you reproduce the bug on the Gitea demo site?
Yes
Log Gist
No response
Screenshots
No response
Git Version
No response
Operating System
No response
How are you running Gitea?
docker
Database
None

It depends on your issue indexer engine. If you are using db engine, this should not be a problem.

As lunny said, "if you are using db engine, this should not be a problem." Because db is not a real search engine like Bleve/Elasticsearch/Meilisearch.
A real search engine need to divide words and build inverted index, that's why it has better performance then "db like". Some engines could handle plural or even typo well, but It requires additional configuration for specific languages.
Think about this, when you search "git" on Google, why can't you see "gitea"? It's not a bug of Google, just like it's not a bug of Gitea either.
I'm going to close this issue, please feel free to comment or reopen.


Webhook setup question?

I'm trying to set this up, but a few things are unclear to me from the readme. Can you update the readme to address these aspects:
(1) How do you figure out which ports to use for the port forwarding? I understand the IP address parts, but don't know what ports to use.
(2) if you use DDNS, I assume you put the domain name in the config file, right?
(3) the account detail in the config file, is for Rachio correct?
To be clear, I guessed at the right values for the above and have it working. Just would be a bit clearer if the readme spelled it out more. Thanks for a great plugin!

I can take a look, there are details and default behavior in the config UI that address some of this very clearly,  which to your point are not explicitly called out in the readme. Can I ask are you using homebridge headless? or using this plugin with HOOBs? HOOBs seems to be notorious for butchering config UI and even omitting required fields.

there is no correct value to send or receive, only that you forward the values you choose.
DDNS, yes it should replace an IP, but I am not sure i am allowing it, I have not had a request to support that with port forwarding.
account detail in the config? You only need a the API key for Rachio, the config file has a user and password which are arbitrary and only used to validate an incoming webhook if you choose to use basic authorization.


HTML report

I think Detekt would benefit from having an HTML report like other tools do, so that we can accompany the name of the check to a description etc. to make it easier to fix. Right now I have to go and look at the Detekt code to understand the point of some checks.

This is something I would like to see too.
@Mauin @arturbosch Could I pick this up?

Sure thing, think yourself assigned :)

when will the feature be released? Would really appreciate it.

RC6 which shippes html output format is out !


VSCode "WakaTime Error" in statusbar, does not collect stats

related: #153
$ uname -a
Darwin M1.local 23.3.0 Darwin Kernel Version 23.3.0: Wed Dec 20 21:30:44 PST 2023; root:xnu-10002.81.5~7/RELEASE_ARM64_T6000 arm64 arm Darwin

latest entry in ~/.config/wakatime/wakatime.log:
{"caller":"cmd/run.go:158","func":"cmd.Run","level":"warning","message":"one of the following parameters has to be provided: --config-read, --config-write, --entity, --offline-count, --print-offline-heartbeats, --sync-offline-activity, --today, --today-goal, --useragent, --version","now":"2024-04-21T22:24:54+03:00","os/arch":"darwin/arm64","version":"v1.90.0"}

vscode developer tools:
workbench.desktop.main.js:655   ERR [Extension Host] [WakaTime][ERROR] Error: Command failed: /Users/kipras/.wakatime/wakatime-cli-darwin-arm64 --entity /Users/kipras/projects/turbo-schedule/common/src/util/findTopK.ts --plugin "vscode/1.86.2 vscode-wakatime/24.2.0" --lineno 4 --cursorpos 26 --lines-in-file 30 --alternate-project turbo-schedule --project-folder /Users/kipras/projects/turbo-schedule

workbench.desktop.main.js:149 [Extension Host] [WakaTime][ERROR] Error: Command failed: /Users/kipras/.wakatime/wakatime-cli-darwin-arm64 --entity /Users/kipras/projects/turbo-schedule/common/src/util/findTopK.ts --plugin "vscode/1.86.2 vscode-wakatime/24.2.0" --lineno 4 --cursorpos 26 --lines-in-file 30 --alternate-project turbo-schedule --project-folder /Users/kipras/projects/turbo-schedule

S @ workbench.desktop.main.js:149
workbench.desktop.main.js:149 [Extension Host] [WakaTime][WARN] Working offline (102); Check your /Users/kipras/.wakatime/wakatime.log file for more details
S @ workbench.desktop.main.js:149

This looks like a problem related to the wakatime-cli, rather than Wakapi, so perhaps file an issue with them? Nevertheless, can you show the contents of your .wakatime.cfg (with API key redacted), please?

[settings]

# Your Wakapi server URL or 'https://wakapi.dev/api' when using the cloud server
api_url = http://localhost:10006/api

# Your Wakapi API key (get it from the web interface after having created an account)
api_key = REDACTED

$ ./.wakatime/wakatime-cli --version
v1.90.0
``

Is it working for editors  other than VSCode? Also, maybe try to temporarily create an account at official wakatime.com and see if it works there. I highly suspect it's an issue with the CLI, though. I'd say file an issue there.
I ran the exact command that had failed for you on my machine and it worked fine, with latest CLI version, but different OS specs, though:
$ uname -a
Linux ferdinand.desktop 6.8.6-200.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Apr 13 15:14:23 UTC 2024 x86_64 GNU/Linux

Any updates on this?

hmm, it looks like wakatime in vscode just started working again. not sure what happened..
probably can close this

https://github.com/wakatime/vscode-wakatime/blob/master/CHANGELOG.md#2450-2024-04-10

24.5.0 (2024-04-10)

Modify api_key_vault_cmd to match wakatime-cli.

i think this was it.

I am still facing the same issue.
Any update or more detail information from the Waka dev team?
[WakaTime][ERROR] Error: Command failed: /../.wakatime/wakatime-cli-darwin-arm64 --entity /../Templates/treact/public/index.html --plugin "vscode/1.85.1 vscode-wakatime/24.9.1" --lineno 13 --cursorpos 5 --lines-in-file 79 --alternate-project treact --project-folder /.../Templates/treact --write

Can you please give some more details about the error by inspecting .wakatime.log?


Class 'Symfony\Component\HttpKernel\Kernel' not found

Hi,
After this class got removed it started giving me issues with the bootstrap.php.cache not loading this class.
When setting this class back in the array of classes in method doBuildBootstrap, the error went away and I could resume my work.
This happened when executing console commands, like cache:clear or whatever.
For the record: This project still uses app/console but this should not be this issue (i think)
I found this commit to be the problem:
https://github.com/sensiolabs/SensioDistributionBundle/commit/7046e6e939bf1b2c1cccce954bd2b4463cc9dceb#diff-15440fa683820b6e7d858e22d328f613
Why was this removed in the first place?

The commit is mentioned in:

https://github.com/symfony/symfony/issues/20753
https://github.com/sensiolabs/SensioDistributionBundle/pull/297

and seems to be a fix for a Symfony 3.2-environment. However, I'm using Symfony 2.8, where it results in the problem as @ricohumme mentioned above.

I'm using SF 3.2.1 BTW

Hi,
I have the same issue, and i'm using Symfony 2.8 as @tjveldhuizen mentionned above.
I was using SensioDistributionBundle v3, and tried to upgrade to 5.0.17.

I am able to reproduce this issue with Symfony 3. As soon as I revert sensio/distribution-bundle (v5.0.15 => v5.0.14) everything starts working again.
Let me know if I can provide further configuration form my end.

Hello everyone, thank you for confirming this issue.
What would really help is some basic steps to reproduce it from scratch, can anyone please provide that?
/cc @nicolas-grekas

Hello,
Here is the require part of my composer.json
    "name": "symfony/framework-standard-edition",
    "license": "MIT",
    "type": "project",
    "description": "The \"Symfony Standard Edition\" distribution",
    "autoload": {
        "psr-0": { "": "src/" },
        "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
    },
    "require": {
        "php": ">=5.3.9",
        "symfony/symfony": "~2.8",
        "symfony/assetic-bundle": "^2.6",
        "symfony/swiftmailer-bundle": "~2.3",
        "symfony/monolog-bundle": "~3.0.2",

        "doctrine/orm": "~2.4",
        "doctrine/doctrine-bundle": "~1.4",

        "twig/twig": "~1.23",
        "twig/extensions": "1.0.1",

	"sensio/framework-extra-bundle": "3.0.2",
	"sensio/generator-bundle": "~3.0",
        "sensio/distribution-bundle": "~5.0",

        "incenteev/composer-parameter-handler": "~2.0",
        "leafo/lessphp" : "0.4.0",
        "jquery/jquery": "1.11.1",
        "imsky/holder": "master-dev",
        "robertotru/to-inline-style-email-bundle": "dev-master",
        "jms/security-extra-bundle": "dev-master",
        "apy/datagrid-bundle": "dev-master",
        "knplabs/knp-snappy-bundle": "dev-master",

        "friendsofsymfony/user-bundle": "v2.0.0-alpha3",
        "friendsofsymfony/jsrouting-bundle": "dev-master",

        "bitgrave/barcode-bundle": "dev-master"
    },

When I do the update command, I get the error in the "clearCache" step.
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 0 installs, 2 updates, 0 removals
  - Updating sensiolabs/security-checker (v3.0.2 => v4.0.0) Loading from cache
  - Removing sensio/distribution-bundle (v4.0.38)
  - Installing sensio/distribution-bundle (v5.0.18) Downloading: 100%
Writing lock file
Generating autoload files
> ComponentInstaller\Installer::postAutoloadDump
Compiling component files
> Incenteev\ParameterHandler\ScriptHandler::buildParameters
Updating the "app/config/parameters.yml" file
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache

Fatal error: Class 'Symfony\Component\HttpKernel\Kernel' not found in _XXXX_\app\AppKernel.php on line 7
PHP Fatal error:  Class 'Symfony\Component\HttpKernel\Kernel' not found in _XXXX_\app\AppKernel.php on line 7
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handl
ing the symfony-scripts event terminated with an exception

  [RuntimeException]
  An error occurred when executing the ""cache:clear --no-warmup"" command:
  Fatal error: Class 'Symfony\Component\HttpKernel\Kernel' not found in _XXXX_\app\AppKernel.php on line 7
  PHP Fatal error:  Class 'Symfony\Component\HttpKernel\Kernel' not found in
  _XXXX_\app\AppKernel.php on line 7
  .

For me it's not really problematic because when I revert to distribution-bundle 4.0.38 it's working fine.
Maybe it's an incompatibility problem, please tell me if I'm doing something wrong.

I've opened https://github.com/sensiolabs/SensioDistributionBundle/pull/308, can someone please confirm if this is actually fixing your issue? Thanks!

Hi,
Thanks for the fix, but it's still not working.
I went into the code and i think there is two issues :
First, in the exectueBuildBootstrap function :
$autoloadDir = escapeshellarg($autoloadDir)
static::checkNeedsInlineKernelClass($event, $autoloadDir);

The $autoloadDir contain "app" (with the quotes), so the "in_array" of the checkNeedsInlineKernelClass function won't return "true".
Second, i got the self::$needsInlineKernelClass to true (by switching the two lines above to test), but it goes back to false in the doBuildBootstrap function, i don't understand why (maybe because of the "Process" class ?)
I don't know if i'm clear, i'm no expert :)

Thank you @ChristineATA for your feedback.
Looks right you're right, the static property is reset, because the process run in its own shell :/
I don't know how to fix this for now, I'm not an expert of the Process component either :)

@ChristineATA I've updated #308 could you have a look? Thanks!

Hi @HeahDude, sorry for the delay.
I get a new error this time:
Fatal error: Class 'Symfony\Component\Console\Input\ArgvInput' not found in C:\G
IT\PHP\ATASITES2\espaces-partenaires\app\console on line 17
PHP Fatal error:  Class 'Symfony\Component\Console\Input\ArgvInput' not found in
 XXX\app\console on line 17
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handl
ing the symfony-scripts event terminated with an exception

  [RuntimeException]
  An error occurred when executing the ""cache:clear --no-warmup"" command:
  Fatal error: Class 'Symfony\Component\Console\Input\ArgvInput' not found in
   XXX\app\console on line 17
  PHP Fatal error:  Class 'Symfony\Component\Console\Input\ArgvInput' not fou
  nd in XXX\app\console on line 17
  .

Sorry that I don't have time to debug like last time but maybe it's telling you something?
Thanks!

Hey @ChristineATA, thank you again for testing it. However this error does not seem related, apparently you're using the old directory structure with console in the app/ folder instead of bin/ and maybe the autoload is wrongly configured there. That's what the message could mean.
Can you please tell use what's your version of symfony and this bundle?
Could anyone who encounters this issue test the https://github.com/sensiolabs/SensioDistributionBundle/pull/308 to confirm the fix works?
Thanks!

Hi,
I encountered this once with the new directory structure, with bin/console.
Verstuurd vanaf mijn iPhone

Op 28 jan. 2017 om 18:46 heeft Jules Pietri<EMAIL_ADDRESS>het volgende geschreven:
Hey @ChristineATA, thank you again for testing it. However this error does not seem related, apparently you're using the old directory structure with console in the app/ folder instead of bin/ and maybe the autoload is wrongly configured there. That's what the message could mean.
Can you please tell use what's your version of symfony and this bundle?
Could anyone who encounters this issue test the #308 to confirm the fix works?
Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.

Hi, I faced the same problem while I was upgrading a symfony 2.0 project to 2.8.
I think it's unrelated to this bundle, but I got here by searching the output in google, so hopefully it will help someone :)
I found that this was caused by autoloading changes between those symfony versions.
You should compare your files to a newly generated empty 2.8 symfony project.
The following changes solved my issue:

put AppKernel and AppCache in the autoload section of composer.json

   "autoload": {
     "psr-4": {
       "": "src/"
-    }
+    },
+    "classmap": [
+      "app/AppKernel.php",
+      "app/AppCache.php"
+    ]
   },

in app.php and app_dev.php require the app/autoload.php instead of app/bootstrap.php.cache and skip the app/AppKernel.php require (that will be autoloaded).

-$loader = require_once __DIR__.'/../app/bootstrap.php.cache';
-require_once __DIR__.'/../app/AppKernel.php';
+/** @var \Composer\Autoload\ClassLoader $loader */
+$loader = require __DIR__.'/../app/autoload.php';

The root cause of the error was the require_once __DIR__.'/../app/AppKernel.php'; line, because at that time the autoloader was not yet loaded.

The problem is in the app/console file, replace the file from a fresh install of symfony 2.8 and remove this lines in the routing_dev.xml
_configurator:
resource<EMAIL_ADDRESS>prefix:   /_configurator
For me it's working.

@smatyas: Thank you for sharing, that solved my problem 👍

I tried applying @smatyas changes in order to make this error go away when running Mautic on php 7.1 but it didn't work. I know that's a different project outside the scope of this issue but it seems to be the same problem so if any of you feel like having a look that would be appreciated!

For me (upgraded Symfony 2.8 to 3.2) the update of bin/console (https://github.com/symfony/symfony-standard/blob/3.2/bin/console#L16) solves the problem.

@smatyas's comment solved the problem for me, thanks!  I was upgrading from Symfony 2.3 to 2.4 and like him found this thread via Google (my situation was unrelated to SensioDistributionBundle too).
I also had the "kernel not found" error when running app/console, so I also had to change console.php:
+/**
+ * @var Composer\Autoload\ClassLoader $loader
+ */
+$loader = require __DIR__.'/autoload.php';
+
 require_once __DIR__.'/bootstrap.php.cache';
 require_once __DIR__.'/AppKernel.php';

 use Symfony\Bundle\FrameworkBundle\Console\Application;
 use Symfony\Component\Console\Input\ArgvInput;

-/**
- * @var Composer\Autoload\ClassLoader $loader
- */
-$loader = require __DIR__.'/autoload.php';

(BTW, it looks like the relevant Symfony Standard edition version of console.php doesn't have the $loader line that I moved, so the change if you're using that would be adding it, not moving it.)

Afterwards I still needed a "composer dump-autoload" on the target system...but in general your solution worked for me!

Closing here, since comments seem to have fixed all issues. Thanks!


List filter

@fzaninotto
Francois, I need in your advice in this issue.
I tried to add filter to our List. But this filter should be differ on initial React-admin filter. It should be similar to Showcase filter. It work principle is shown at the video:
https://drive.google.com/file/d/10yAt_ZtPf-Ljw49RP1ZCMzZI5N1yterX/view?usp=sharing
My solution looks approximately like this:
class MyList extendes Component {

  state = {
     search: null,
  }

  setMySearch = e => {
      this.setState({
         search: e.target.value,
      })
  }

  render() {
    const { search } = this.state;
    return (
      <ListBlock>
         <MyFilter onChange={e => this.setMySearch(e)} />
         <List>
            <MyCustomDatagrid mySearch={search} />
         </List>
      </ListBlock>
    );
  }
}

In MyCustomDatagrid I want to catch changing of search by componentWillReceiveProps():
class MyCustomDatagrid extends Component {

  componentWillReceiveProps(newProps) {
    ......
  }

  render() {
     ....
  }
}

But component MyCustomDatagrid isn't re-rendered, when I change search.
The reason is - MyCustomDatagrid is located inside RA List. I tried to extract MyCustomDatagrid from List and re-render works!
My solution is located here:
https://github.com/BogdanScherban/PulseTile-RA/blob/filter-try/src/core/plugins/Allergies/AllergiesList.js
Could you please tell me how can I realize this type of filter?

@tony-shannon @PhilBarrett can we consider this as Done?


Formatter functionality: adjust table size to its content

Just like prettier (unfortunately prettier has some weird formatting style like this):
# Markdown test

1.  foo <-- notice two spaces before character
2.  bar <-- notice two spaces before character
3.  baz <-- notice two spaces before character

So other than tables, I prefer markdownlint.

Sorry, what are you asking for? The example above is a 3-item list, not a table?

I think "tab size" rather than "table size". It seems to be talking about the trailing space/alignment after an ordered list start

That would already be covered by MD030 already

Sorry for confusing. The list example was just to tell that I don’t like prettier: it’s weird, just look how they format lists lol.
But markdownlint doesn’t format tables. That’s sadge.

This is a terribly explained issue, if the maintainers or others can't understand what you're asking/reporting, you waste a lot of peoples time

I still don't understand this issue or how it relates to prettier. Please show an example of the current behavior of markdownlint and explain what you would like to see instead.

Here's what prettier does to tables:

But markdownlint can't do this, unfortunately.

This is a terribly explained issue

Can you please tell me what is terribly explained here:

Formatter functionality: adjust table size to its content

My bad though, that I placed body into the issue: sorry for that. It was perfectly clear from just the title.

Thanks for the clip! This seems to be the same request as #90, for table cells to align vertically.


[AMBARI-22913]. Add ability to MasterHostResolver to resolve by namespa…

…ce at a time (amagyar)
What changes were proposed in this pull request?
MasterHostResolver should support NameNode federation. In federation mode there can be multiple master->slave(s) NameNode pairs/namespaces. The upgrade behavior which figures out the restart order for the Namenodes needs to become namespace aware.
How was this patch tested?
Tested the following scenarios

HDP 2.5 -> 2.6 EU with single NameNode
HDP 2.5 -> 2.6 EU with NameNode HA
HDP 2.5 -> 2.6 RU with NameNode HA

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/438/
Test PASSed.

I addressed the rest of the remarks.

Refer to this link for build results (access rights to CI server needed):
https://builds.apache.org/job/Ambari-Github-PullRequest-Builder/449/
Test PASSed.


Feature/fix notifications ios

I'd be great to request permission before the first notification (or when toggling "Show Notifications") and not on initial app launch. Similar to our location access request. Happy to hear your thoughts about that. Looks good for me otherwise


Wrong Descriptor

Reading documentation/types description seems like it inconsistent eg:
/**
 * This is a simple "get" function that retrieves a state on demand. It can be used outside of React components as well.
 * @param stateKey One or multiple strings, separated by comma. Each string should represent key from the state object. For example: useStoreMe("user", "isLogged", "language");
 * @see https://github.com/mario-iliev/store-me#getstoreme
*/
export declare function getStoreMe(stateKey: string): object;

{...} = useStoreMe("user", "isLogged", "language") != getStoreMe(stateKey: string): object;
Suggestion:
getStoreMe(stateKeys: string[]): object;

Ping


⚠ Redacted has degraded performance

In e738d0e, Redacted ($RED) experienced degraded performance:

HTTP code: 200
Response time: 9775 ms

Resolved: Redacted performance has improved in 8388c16 after 12 minutes.


Process more than 2 frames?

Thanks for sharing this great work!   Is there an easy to process an entire video with this yet, or are we limited to using a pair of input frames only?

Hi @noobtoob4lyfe there are a few features that will interpolate across a series of frames:
Video Inflation: inserts filler frames between all frame pairs to create slow motion, or smooth low-FPS footage
Resynthesize Video: creates new middle frames for all frame triplets, creating a whole new set of frames for use in restoration
Upscale Frames: creates a set of cleaned and/or upsized frames
Change FPS: use interpolation to create frames to convert any FPS to any other FPS
Various tools that will process sets of PNG frame files, for instance, to create a .MP4 video
Let me know what you would like to accomplish with the tool and I can provide more a more detailed workflow.


SW-2823 Add "None" viability test substrate type

Users want to indicate that a viability test didn't use a substrate. Add "None" to
the list of substrate types, valid for both lab and nursery tests.

Current dependencies on/for this PR:

main

PR #941   👈

This comment was auto-generated by Graphite.

Yes, this needs FE updates too.


Add WWDCast by @sgl0v

[X] Project URL: https://github.com/sgl0v/WWDCast
[X] Update contents.json instead of README
[X] One project per pull request
[X] Avoid iOS or open-source in description as it is assumed
[X] Use this commit title format if applicable: Add app-name by @github-username
[X] Use approved format for your entry

@vpeschenkov Done.

@sgl0v sorry, I've missed the screenshots, they should be a direct link to an image. Could you replace those links to these:
https://raw.githubusercontent.com/sgl0v/WWDCast/master/.github/screen1.png
https://raw.githubusercontent.com/sgl0v/WWDCast/master/.github/screen2.png
https://raw.githubusercontent.com/sgl0v/WWDCast/master/.github/screen3.png
Thanks!

@sgl0v thank you!


Publish Workbook with published data source to another site

Tableau Server version is 2020.4.5
tableauserverclient version is 0.17.0
Python version 3.9
Hi,
I have two sites, assume their names as Sandbox1 and Sandbox2.
So, initially, I have created a Workbook, then published that data source to the "Sandbox1" site.
I can move that workbook among projects in the "Sandbox1" site using python code.
Now, I want to move the same workbook to the "Sandbox2" site using python code,
I have already moved the published data source to "Sandbox2", then I have been trying to publish the workbook to "Sandbox2" , which is not working for me.
Find the code,
`
import tableauserverclient as TSC
from tableauserverclient import ConnectionCredentials, ConnectionItem
server = TSC.Server("https://tableaudev.co/")
tableau_auth = TSC.TableauAuth('username', 'password', 'Sandbox2')
with server.auth.sign_in(tableau_auth):
all_projects, pagination_items = server.projects.get()
default_project = next((project for project in all_projects if project.is_default()), None)
new_workbook = TSC.WorkbookItem(default_project.id)
server.workbooks.publish(new_workbook, 'C:/Users/Pavan/Security Published Datasource.twbx',
TSC.Server.PublishMode.Overwrite
)
I am able to publish the workbooks which have Excel or Extracts as a data source.
Note: i have Migrated published data source to "Sandbox2".
Error Message:

It looks like the workbook XML contains references to the published datasource, and this may not be able to be completed successfully without modifying that.

I think this would require the document api (https://github.com/tableau/document-api-python) to update the datasource references in the workbook. This isn't currently supported within the python library.


[BUG] Authentication expects a space after commas in Authorization header parameters

Describe the bug
LocalStack, which uses, in its Docker container, kinesis-mock is reporting to my Elixir ex_aws -based application that "Authorization header requires \Signature\ parameter. Authorization header requires \SignedHeaders\ parameter." (linked Localstack issue)
It seems parsing expects a space between , and the next parameter when this is not required by AWS.
To Reproduce
Steps to reproduce the behavior:

run java -jar ./kinesis-mock.jar (exposed 4568 for plain HTTP requests)
curl -v -X POST -H "Authorization: AWS4-HMAC-SHA256 Credential=test/20221219/us-east-1/kinesis/aws4_request,SignedHeaders=content-type;host;x-amz-date;x-amz-target,Signature=ba9705e002b4f224d08c908606f0076a7f4f53bcc68315897764c587c7e5ffb5" -H "content-type: application/x-amz-json-1.1" -H "host: localhost:4566" -H "x-amz-date: 20221219T221436Z" -H "x-amz-target: Kinesis_20131202.ListStreams" http://<IP_ADDRESS>:4500 -d '{}'

Expected behavior
No error. (we could probably split on , and trim the whitespace.

@bentsku, good job posting the issue in this library. I was expecting you'd ask me to do it (over at LocalStack), thus the double post. Sorry for the confusion.

No problem, I probably should have answered before posting here 😅
I was thinking about a fix as well, wanting to contribute, but Scala is unknown to me 😄
Splitting on , will have the issue on the first part of the string:
"Authorization: AWS4-HMAC-SHA256 Credential=test/20221219/us-east-1/kinesis/aws4_request,SignedHeaders=content-type;host;x-amz-date;x-amz-target,Signature=ba9705e002b4f224d08c908606f0076a7f4f53bcc68315897764c587c7e5ffb5", between AWS4-HMAC-SHA256 and Credentials. I don't know what the pattern would be in Scala 😕

Yeah it wouldn't be as easy as splitting on ,. I think we could potentially do a replace command which adds a space after every comma, might be that easy.

Yes, my Scala is also limited 😄 and I was playing with an online playground. It's not just a question of splitting on ,, for sure. My initial approach with be to work with Regex, but I'm not sure how much of a performance impact that would imply.

I've got a fix up, pretty easy change 😄

Fixed in #388

Thanks much.


Create /fetch serverless handler

Depends on https://github.com/openregister/generate-picker-data-file/pull/5.
/generate is an endpoint that you can post a JSON of the country register and it will return a data file based on just that.
/fetch is an endpoint that will go off and fetch the country, territory, uk registers and the synonym CSV and return a full data file.
TODO:

[ ] Fix URL to synonym CSV.

Wait on #5 to be merged before reviewing this as it's needlessly noisy.


Unable to find template plugin matching 'typescript-resolvers'

Unable to find template plugin matching 'typescript-resolvers'
Install one of the following packages:

Literally do the setup wizard with npm in a blank slate project. Yes I installed the npm modules. I've seen lots of other issues about this same thing, and none helped.

@EthanSK ?

I cannot provide a meaningful repro because it is just what I said in the description, a blank slate project in a blank slate folder that is not in a monorepo. I have other lerna (monorepo) projects on my machine, and I don't know how npm works behind the scenes with global module caching, so maybe it's that? But the project i'm testing this on is definitely not in a monorepo

I see, but I suggested a few things to check. Especially regarding node_modules structure. Try yarn why to see if you are able to find duplications.  Maybe do you have one of the codegen packages installed globally?
If it's not something you can share or reproduce, I'll have to close this issue, because we won't be able to assist.


fix: plunkr starter template not working

zone.js:655 Unhandled Promise rejection: Cannot create property 'creationTrace' on string '__zone_symbol__optimizedZoneEventTask' ; Zone:  ; Task: Promise.then ; Value: TypeError: Cannot create property 'creationTrace' on string '__zone_symbol__optimizedZoneEventTask'
at Object.onScheduleTask (long-stack-trace-zone.js:115)
at ZoneDelegate.scheduleTask (zone.js:404)
at Object.onScheduleTask (zone.js:300)
at ZoneDelegate.scheduleTask (zone.js:404)
at Zone.scheduleTask (zone.js:235)
at Zone.scheduleEventTask (zone.js:261)
at HTMLElement.addEventListener (zone.js:1561)
at DomEventsPlugin.addEventListener (dom_events.ts:37)
at EventManager.addEventListener (event_manager.ts:32)
at DefaultDomRenderer2.listen (dom_renderer.ts:113)
at

Thanks for flagging this, have now sorted. Was an issue with zone.js (unsurprisingly)


$location.search() parameters

When i send this url to controller:
"http://localhost/match/result/?id=1234"
"$location.search()" gives me null ! But when i use like that
http://localhost/match/result/#?id=1234
it gives me "{id: "1234"}" .
Is that a issue or trick ?

It works as expected. AngularJS $location is concerned wit cient-side routing and search params. You seem to be running in the hash-bang mode so the client-side part of the URL comes after #.
See https://docs.angularjs.org/guide/$location for more.


[i2c, dv] Add i2c_fifo_overflow (v2) test for rx_fifo and fmt_fifo

The main point of this test is to create constraints and sequence in order to deterministically trigger overflow interrupts
which can be predictable and verified by DV

Update i2c_testplan.hjson to replace rx_fifo_overflow and fmt_fifo_overflow tests by a unified fifo_overflow test
Add i2c_fifo_overflow_vseq to verify fmt_overflow and rx_overflow interrupt
Update i2c_scoreboard to verify dropped data due to fifo overflow
Minor refactor i2c_fifo_watermark_vseq

Signed-off-by: Tung Hoang<EMAIL_ADDRESS>

This PR is a part of submitted #2803


Crash when using in api 19 and appcompat v21.1

It crash when I use it whit android api 19, but when I try in 21 and up it doesn't:
update: also it's to note that we are using compat compat v21.1 before that, was working just fine.

05-15 16:08:01.862 31662-31761/com.bebler.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #2
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:849)
Caused by: java.lang.VerifyError: fr/tvbarthel/lib/blurdialogfragment/FastBlurHelper
at fr.tvbarthel.lib.blurdialogfragment.BlurDialogEngine.blur(BlurDialogEngine.java:389)
at fr.tvbarthel.lib.blurdialogfragment.BlurDialogEngine.access$300(BlurDialogEngine.java:41)
at fr.tvbarthel.lib.blurdialogfragment.BlurDialogEngine$BlurAsyncTask.doInBackground(BlurDialogEngine.java:564)
at fr.tvbarthel.lib.blurdialogfragment.BlurDialogEngine$BlurAsyncTask.doInBackground(BlurDialogEngine.java:520)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:849)

Hi @cgomezmendez  (:
Thanks a lot for your report.
Which version of the library are you using ?
This error was known on the 2.1.1 version and shoud have been fixed in the 2.1.2 one : ef21d08e98355f74ea7948ab8a402185e2ca95e1
The VerifyError was linked to RenderScript v7 import in the FastBlurHelper.
The old fix was to add the following lines to your build.gradle even if you're not planning to use renderscript:
defaultConfig {
...
renderscriptTargetApi 22
renderscriptSupportModeEnabled true
...
}
I recommend you to use the last version promoted on jcCenter() :
compile 'fr.tvbarthel.blurdialogfragment:lib:2.1.2'
Tell us it solves your issue (:
Happy coding,
Thomas.


option to hide metanavigation link

On  https://www.baloise.com/de/home.html is only one homepage available.
So it should be possible to hide this link in the metanav.
We can not hide it by oureself because we need the informations in bal-navigation-level-meta> -> label/mobilelabel and link for the rendering of the mobilenavigation.
Can you provide a property to hide the desktopLink?

@janineKleessen So can we say always when in the Meta Navigation there is only one link on Desktop we can hide them?

Will be done with the refactoring


Timesheet - 29/04/2021 - Dmitry Mugtasimov

Task 1
Reviewed documentation: https://github.com/thenewboston-developers/Website/issues/1752
Proof of Work

See comments left for the task and comments on the related documents (get links from the task comments)

Time Spent
2.5 hours

Total Time Spent
2.5 hours
Account Number
757d598308bf1e2943bd1a9fc34ae7b8951ca864d64228b59e62614b27ddefc4

Any update for this timesheet @dmugtasimov ?

Approved


Bump Test Utils to improve the experience of running integration test…

…s on clusters without agents
High-level description
Make it easier to run integration tests on clusters without agents.
Corresponding DC/OS tickets (obligatory)
These DC/OS JIRA ticket(s) must be updated (ideally closed) in the moment this PR lands:

DCOS_OSS-3862 DC/OS Test Utils - DcosApiSession.get_args_from_env assumes agents env var not set if there are no agents

Checklist for all PRs

[ ] Added a comprehensible changelog entry to CHANGES.md or explain why this is not a user-facing change: This is a change only for folks running integration tests
[ ] Included a test which will fail if code is reverted but test is not. If there is no test please explain here: This is a change only for folks running integration tests
[X] Read the DC/OS contributing guidelines
[X] Followed relevant code rules Rules for Packages and Systemd

Checklist for component/package updates:
If you are changing components or packages in DC/OS (e.g. you are bumping the sha or ref of anything underneath packages), then in addition to the above please also include:

[X] Change log from the last version integrated (this should be a link to commits for easy verification and review): 431c33756ab2959b2fcb658bca861314497f7c0d...713dea062ffddf1a8ec14f95dad84700349c885
[X] Test Results: https://teamcity.mesosphere.io/viewLog.html?buildId=1291471&buildTypeId=DcosIo_DcosTestUtils_ToxDcosTestUtils,
https://teamcity.mesosphere.io/viewLog.html?buildId=1291467&buildTypeId=DcosIo_DcosTestUtils_ToxIntegrationTestEnterprise,
https://teamcity.mesosphere.io/viewLog.html?buildId=1291470&buildTypeId=DcosIo_DcosTestUtils_ToxIntegrationTest
[ ] Code Coverage (if available): [link to code coverage report] - not available

@mesosphere-mergebot bump-ee

@mesosphere-mergebot label Ready For Review

@mesosphere-mergebot override-status teamcity/dcos/test/azure/arm https://jira.mesosphere.com/browse/DCOS-45278

@mesosphere-mergebot sync

@mesosphere-mergebot label ship it


Support for AMD RX 5700

Hi there,
First of all, thank you for making this excellent fun-to-use tool!
But no matter what I did I always got the "No supported N-card found, use CPU for inference" error with my GPU card being AMD Radeon RX 5700, It would be awesome if you guys could add the support for my GPU if it isn't already supported.
Thank you again!

Sorry, AMD GPU have not been supported now.
Please see #272


SQL Lab Issue after upgrade the Imange from version 2.x.x to version 3.1.3

Bug description
I recently upgraded Superset to version 2.x.x to Version 3.1.3, including updating the Superset image and database. After the upgrade, I am unable to open SQL Lab, receiving an error displayed in a screenshot. Additionally, I encounter an "Access Denied" error when trying to open Row-Level Security.
Could someone suggest a solution for these issues?
Screenshots/recordings

Superset version
master / latest-dev
Python version
3.9
Node version
16
Browser
Chrome
Additional context
No response
Checklist

[X] I have searched Superset docs and Slack and didn't find a solution to my problem.
[ ] I have searched the GitHub issue tracker and didn't find a similar bug report.
[ ] I have checked Superset's logs for errors and if I found a relevant Python stacktrace, I included it here as text in the "additional context" section.

The issue has been resolved in my environment. To upgrade Superset with a new image, I first deploy the new image, then run the command superset db upgrade inside the Superset pod, followed by superset init.
Please refer to the above ticket for details about the reported issue:
https://github.com/apache/superset/issues/29482


Gson Deserialization is not working on Model extends AbstractItem<T1,T2>

Cannot deserialize
public class Category extends AbstractItem<Category, Category.ViewHolder>

@chanonly123 then you probably should use the Generic approach. Which splits apart item and model:
https://github.com/mikepenz/FastAdapter/blob/develop/app/src/main/java/com/mikepenz/fastadapter/app/GenericItemActivity.java

Awesome, Thanks

@chanonly123 i just ran into a similar problem but my problem is that my entire app is already built on the basis of AbstractItem and rewriting it would be a major pain the butt...
is that how you ended up fixing it or did you find anothe way?
because i found that recreating the items on startup also fixes the problem (or so it seems). on the one hand its longer (and perhaps unneccessary) running time, but on the other hand i just had to add a couple of for loops and that was it


Contact form

In this project we :

Add contact form and footer sections
Add  style for both contact form and footer sections
Update README.md file

If one or two field of the form is empty user can not send the form, I just make the fields required, there we will have an error by the browser. Is not enough?
Please any suggestion?

@shella12 ,
This project is already approved, and I did not send the last pull request.
Is there any problem, please?

Zohra,
This is me trying to submit our collaborative project. I will give an
update on slack
On Sat, Apr 8, 2023, 4:43 PM Zohra Neda @.***> wrote:

@shella12 https://github.com/shella12 ,
This project is already approved, and I did not send the last pull request.
Is there any problem, please?
—
Reply to this email directly, view it on GitHub
https://github.com/zohra-neda/Portfolio/pull/3#issuecomment-1500873579,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A3QEPBDUUVOD276YDLRUVHDXAFFMNANCNFSM6AAAAAAWLZOQCA
.
You are receiving this because you commented.Message ID:
@.***>


Node global polyfill is broken by 'use strict'

I think I may have found an issue caused by how how Webpack polyfills global.
Here's what happened:

Lodash uses global in its code
We introduced Lodash as a dependency into Redux
I noticed that the UMD build (created with Webpack) is broken if transpiled another time with Babel

We could argue that transpiling UMD builds is wasteful but some people do that due to bad configurations, and we don't want to break them.
So why is the build broken? This happens because Webpack global polyfill emits code like this:
    /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))

This works as a polyfill in most cases but if you add 'use strict' at the top of the file, it will return undefined due to strict semantics. And Babel adds 'use strict'.
It would be nice if the global polyfill was resistant to 'use strict'. For example, Lodash uses Function('return this') as last resort, which is immune to strict semantics. However this may cause issues in restricted environments.
In practice, some combination of global checks might be helpful. Unfortunately I don't know enough about the ways to fix that, but hope it helps!

webpack emits non-strict code. You should not insert "use strict" at the top. This means: only use babel on ES6 code. The error is to run babel on the bundle. This could break other stuff too (that's why you shouldn't run the babel-loader on node_modules).
But anyway we can change the default to a more safe approach.
(function() { return this; }())
(1,eval)('this')
Function('return this')()
This mean more code and why better move it into a separate module instead of injecting it into every module.

This was fixed

This was fixed

@sokra can you expand on "this was fixed"? What version? Where is code? I'm having the same issue and I'm babel transpiling a node-module that has "use strict;" at the top of it.

https://github.com/webpack/webpack/commit/2ff9a247e242f716b8ad41da460ca57108617d36

only in webpack 2. If you want to backport it to webpack 1 feel free to send a PR.

that's why you shouldn't run the babel-loader on node_modules

@sokra hm, but if you want tree shaking to work then? Sorry for jumping into this issue like this.


Timing and rpcauth

This is hopefully the final change I have to make to use satstack on the raspiblitz.

It changes the README to use rpcauth in the bitcoin.conf instead of the normal rpcuser/rpcpassword

It adds a new config file lss_rescan.json which will remember the latest block this wallet was synced. Every time the user ends the program, the current state is dumped into the file leading to way fewer loading times, making this whole project more userfriendly.

This PR builds on the previous change, sothat I could test it way more easily, in case the other change is merged, I will rebase this change.

The lss_rescan.json has the following information and will reside in the same dir as the lss.json:
{
 "last_synctime": "Thu Dec 22 18:49:10 2022",
 "timestamp": "1671731350",
 "last_block": 768516,
 "satstack_version": "v0.16.1"
}

Fixes #91 #90 #86 and many more, I did not search through all of them

If you want to scan the wallet from a specific block, just edit the lss_rescan.json and paste the lastblock you want to rescan from.


Annotate Tracks

We already have the functionality to click on a point on a track, and see speed or optionally delete the point. How about adding the ability to enter a short comment about that point? For example, to say “turning round wind farm” or “here I came head to wind to reef”, etc. Such comments could then appear during the time-lapse display, giving a richer view of what was going on.

It is now possible to add notes to tracepoints. Open a log, click on a tracepoint on the map and add a note. Those notes are also included in Timelapse animations so you can create memories of your sails and view them Timelapse.


lila: improve regex_esc implementation

Using gsub() allows regex_esc() to support any string instead of single characters only. This makes regex_esc_str() obsolete, although it doesn't seem to be used anywhere anyway. But future code that might have used it can now just use regex_esc().
The tests passed (ran with LANG=C make testawk).

Looks good to me. Thanks for the suggestion, @AdamantGarth!


Determine initial composition of Teams #1

Each of the core team members should indicate which teams they wish to be a member of.  Ideally, we would have at least 1 member of the current core team on each of the other teams.  The longer descriptions of each team can be found at:  https://github.com/pandas-dev/pandas-governance/blob/main/teams.md
For each team, we list the current members and who decides how new members can join.

Core Library Team (Membership determined by team members)

All current core team members.  If you wish to drop from this team, now is the time to do so!

pandas-stubs Team (Membership determined by team members)

Irv Lustig
Torsten Wörtwein

Finance Team (Membership determined by Steering Committee)

Matthew Roeschke
Jeff Reback
Joris Van den Bossche
Patrick Hoefler

Infrastructure Team (Membership determined by team members)

Marc Garcia
Matthew Roeschke
Thomas Li

Outreach Team (Membership determined by Team).  Formerly "Communications Team"

Marco Gorelli
Marc Garcia

Triage Team (Membership determined by Core Library Team)

People with current Triage privilege in Github

Documentation Team (Membership determined by team members)
Contributor Community Team (Membership determined by Core Library Team)
Website Team (Membership determined by Team)

For the last 3 teams, we need volunteers from the current core team to get those teams started.
In the comments below, each member of the current core team @pandas-dev/pandas-core  should indicate the following:

If you are currently on any of the above teams, and you wish to be removed.
If you wish to be listed as a member of any of the  above teams.

If you are currently on any of the above teams, there is no need to indicate whether you wish to continue.  We will assume that you will continue as a member of that team.
Responses needed by October 25.
@pandas-dev/pandas-core

I won't be joining any of the teams at this point. Also not the ones I'm currently a member. The time I have for pandas right now is quite limited at the moment.

I won't be joining any of the teams at this point. Also not the ones I'm currently a member. The time I have for pandas right now is quite limited at the moment.

@datapythonista can you clarify the statement "not the ones I'm currently a member"?  Do you still want to be on the core library team?  If you're not on any teams, including the core library team, then we'd move you to the "Inactive Maintainer" status.

I'd be happy to be added to Outreach and/or Infrastructure

@datapythonista can you clarify the statement "not the ones I'm currently a member"? Do you still want to be on the core library team? If you're not on any teams, including the core library team, then we'd move you to the "Inactive Maintainer" status.

I meant infrastructure and communications. I'm happy to stay as an active core dev for now.

I'd like to be removed from the Infrastructure Team.
(I'm happy to stay on the Finance Team)

I'm willing to be on the documentation, contributor community, and outreach teams.

In addition to the teams I am already on, in practice I am also on the contributor community team.
And I would have the desire to be involved in documentation and outreach/website teams, but not entirely sure if I will have the time commitment.

but not entirely sure if I will have the time commitment.

I understand what you're saying here, but I do want to emphasize in general that by signing up for a team you are not committing to having bandwidth for any particular time period nor task. At least, that's my take.

I'm a bit late to respond, but I'd like to be on the contributor community team

What are our next steps here? I know we had a deadline of Oct 25 in the OP - do we still need more time to gather feedback or should we move forward?

hey - i'd like to be removed from outreach please
i'm not very active now, but I have made some changes which will affect 3.0, so I'd like to stay on core at least until then (after which, I'll reassess based on my activity level)

If you are currently on any of the above teams, there is no need to indicate whether you wish to continue. We will assume that you will continue as a member of that team.

yep. happy with the status quo. i.e. just the core team for now.

do we still need more time to gather feedback or should we move forward?

although from the instructions I didn't need to comment, hopefully this ticks me off the list if awaiting further comments

What are our next steps here? I know we had a deadline of Oct 25 in the OP - do we still need more time to gather feedback or should we move forward?

On my list of things to do is to list the members of the teams based on the feedback given here.  Thanks for asking.  I will be doing this by the next governance meeting next week.
@jorisvandenbossche is reaching out to some people who we hope are willing to be the "vote collector" for the first steering committee vote.

Based on the above, here is the proposed set of teams:

Core Library Team (Membership determined by team members)

@WillAyd	William Ayd
@jreback	Jeff Reback
@jorisvandenbossche	Joris Van den Bossche
@TomAugspurger	Tom Augspurger
@bashtage	Kevin Sheppard
@noatamir	Noa Tamir
@fangchenli	Fangchen Li
@jbrockmendel	jbrockmendel
@lukemanley	Luke Manley
@datapythonista	Marc Garcia
@mroeschke	Matthew Roeschke
@simonjayhawkins	Simon Hawkins
@Dr-Irv	Irv Lustig
@alimcmaster1	Ali McMaster
@attack68	JHM Darbyshire
@topper-123	Terji Petersen
@MarcoGorelli	Marco Edward Gorelli
@rhshadrach	Richard Shadrach
@lithomas1	Thomas Li
@phofl	Patrick Hoefler

pandas-stubs Team (Membership determined by team members)

@Dr-Irv		Irv Lustig
@twoertwein	Torsten Wörtwein
@loicdiridollou	Loic Diridollou

Finance Team (Membership determined by Steering Committee)

@mroeschke	Matthew Roeschke
@jreback	Jeff Reback
@jorisvandenbossche	Joris Van den Bossche
@phofl		Patrick Hoefler

Infrastructure Team (Membership determined by team members)

@lithomas1 	Thomas Li
@WillAyd	Will Ayd

Outreach Team (Membership determined by Team). Formerly "Communications Team"

@WillAyd		Will Ayd
@rhshadrach	Richard Shadrach
@jorisvandenbossche	Joris Van den Bossche

Triage Team (Membership determined by Core Library Team)

@Moisan	Thierry  Moisan
@jnothman	Joel Nothman
@afeld	Aidan Feldman
@tswast	Tim Sweña (Swast)
@jreback	Jeff Reback
@moink	moink
@asishm	Asish Mahapatra
@dsaxton	Daniel Saxton
@smithto1	Thomas Smith
@hasB4K	Mathis Felardos
@fujiaxiang	Jiaxiang
@bashtage	Kevin Sheppard
@DriesSchaumont	Dries Schaumont
@martindurant	Martin Durant
@debnathshoham	Shoham Debnath
@noatamir	Noa Tamir
@ssche	Sven
@fangchenli	Fangchen Li
@lukemanley	Luke Manley
@fjetter	Florian Jetter
@charlesdong1991	Kaiqi Dong
@DeaMariaLeon	Dea María Léon
@ParfaitG	Parfait Gasana
@Dr-Irv	Irv Lustig
@alimcmaster1	Ali McMaster
@realead	realead
@AlexKirko	Alex Kirko
@attack68	JHM Darbyshire
@alexhlim	Alex Lim
@cdknox	Conner Knox
@CloseChoice	Tobias Pitters
@MarcoGorelli	Marco Edward Gorelli
@erfannariman	Erfan Nariman
@mzeitlin11	Matthew Zeitlin
@AnnaDaglis	Anna Daglis
@ivanovmg	Maxim Ivanov
@rhshadrach	Richard Shadrach
@lithomas1	Thomas Li
@arw2019	Andrew Wieteska
@ShaharNaveh	Shahar Naveh
@Aloqeely	Abdulaziz  Aloqeely
@phofl	Patrick Hoefler
@natmokval	Natalia Mokeeva
@paulreece	paulreece

Documentation Team (Membership determined by team members)

@rhshadrach	Richard Shadrach
@jorisvandenbossche	Joris Van den Bossche

Contributor Community Team (Membership determined by Core Library Team)

@rhshadrach	Richard Shadrach
@jorisvandenbossche	Joris Van den Bossche
@noatamir	Noa Tamir

Website Team (Membership determined by Team)

@jorisvandenbossche	Joris Van den Bossche


Make strongSwan's dpdaction configurable

As stated in #3821, making the dpdaction configurable comes in handy for IPsec start on traffic CARP clusters for a clean failover.
I've added a default option, to not break existing setups.

@WRMSRwasTaken this is probably the most sensible way to add it as an option. thanks!

Nice addition :)

According to the manual there is also "none" and "hold" which could be supported:
https://wiki.strongswan.org/projects/strongswan/wiki/Connsection

none is the default when dpdaction is enabled, hold might be an option, although I've no idea how well it could work.


Git: stale editor inputs hanging around

I am seeing multiple editors in index and working tree hanging around even though those are no longer valid:

There's no control of this from an extension side. The current API has:

provideContent(): string
onDidChange(): Event<Uri>

What I would need is an onDidDispose event. I need a way to tell someone that a specific resource I once provided content for no longer exists. We could then do the right thing throughout the workbench.
Thoughts @jrieken @bpasero ?

Unsure what to do there. The API just talks about content provider so I am unsure if they should be allows to define the lifecycle of the document...
Maybe the issue is that we don't have a nice dispose story for virtual documents. @joaomoreno Would it help if we start to dispose virtual document more clever? So start to ref count them and instead of the 3mins rule we could say virtual documents get disposed when they aren't 'used' anymore - where used means on the extension host not referenced anymore and on the main side not visible anymore.

That does work if the extension also participates in the ref counting. 👍

I can investigate...

@joaomoreno @jrieken did you guys figure out a solution? I think today the experience is pretty bad with diff editors piling up from working tree and index even though I already committed my stuff. I think we need an explicit way for extension (or any document provider) to indicate when a resource is no longer valid. I would need the same once files:// adopt this because a deleted file is also no longer valid and should result in the editor being closed (at least that is our behaviour today).

Last time I talked to @joaomoreno we figured its the workbench not releasing the inputs but I could be wrong

@jrieken The workbench doesn't know when it can release the inputs. There's a concept missing: the death of a Resource, regardless of how many people are holding on to its TextModel.

Is this still an issue? Do inputs couple their lifecycle to editor model references? My understanding is that with the latest change @bpasero did the input just holds a reference and doesn't look at what models are alive

I think the missing concept is still that a text content provider can signal a resource should be disposed because it is no longer valid. When I commit my changes I would expect any input that I opened from that commit to close (e.g. diff editors). Not sure though if this is a concept we need to add as API to extensions or rather the SCM viewlet being the one that closes any editor opened as soon as there are no more outgoing changes in a group.

FYI: I use an auto markdown preview extension which had a similar problem. Closing the source document that the preview pane is created and synchronized with doesn't close the corresponding preview. Additionally, opening multiple documents can sometimes mess up or shuffle tabs around. I'm not sure if it's relevant but it may be helpful to keep that in mind so that other developers are able to handle these problems more easily too.
https://github.com/hnw/vscode-auto-open-markdown-preview/issues/2
https://github.com/hnw/vscode-auto-open-markdown-preview/issues/7
https://github.com/hnw/vscode-auto-open-markdown-preview/issues/10

Is there any progress on this? New user to VSCode and it's a little annoying and weird that I have to close these all the time. Even if it wasn't automatic I would love even just a Close all working trees command that would close them so I don't have to do it manually every time.

To me at the very least it would seem appropriate to have all "working tree" editors grouped in their own tree in the explorer pane, possible with an option to hide that tree entirely unless you are in the "Source Control" view.  This would greatly reduce the clutter and grunt-work of closing those editors all the time.

Also, its bizarre discarding changes made by my cat's paws on the keyboard from the night before, and still seeing the changes in the document after going to Source control pane and Discarding Changes on that file.
Obviously the problem here is the cat trying to code and not knowing basic syntax and grammar, however, the Discard Changes feature I would intuitively expect it to also revert the changes in the opened document tab (or ask to revert?)
Instead the changes are still visible in the document tab, even though the underlying file has been reverted.  You end up with a modified file confirmation box that could possibly reintroduce "speculative code" within files, and need to Discard Changes yet again on that file.

I hate to be that guy, but any news?

Still looking for something on this. Anything new?

@jrieken I wonder if we're now closer to fix this?

not really - you can be a file system and send a delete event but I think that will make us keep the editor input anyways

Regardless of whether an editor is "stale" or not, is there a way to accomplish my earlier suggestion of at least grouping all these working tree/index editors within their own tree rather than scattered among the other editors?  I personally don't ever see a use for these editors unless I'm in the source control pane (at which point they are handled differently anyway).

Also hoping for a solution here in a future release. 👍

Seeing that this issue is now two years old, would it be possible to implement what @dlong500 suggested for now?

Just going to throw an additional voice behind this request. Ideally I'd like to have a setting that would make working tree editors close themselves automatically as soon as another editor is switched to. Otherwise I always end up accumulating a silly quantity of open working tree editor tabs.

I'd love to see this request implemented as well. VSCode is the only code-editor I can think of that has this functionality - you inspect some files in the VCS editor to see what the diff is, but after you're done, there are multiple 'working tree' file views left open that have to be manually close.

Almost 3 years later and no comments :-/

Over 3 years now!
This extremely annoying and prevents using opened tab limit - while checking for changes it closes actual development tabs!

I add myself to the list of gripes.
In some editors code diffs are a (globa) "toggle" somewhere in the UI.
Keeping an open tab for them is crazy!

Can we just have option for diff to open in new window? So we at least could close all of them in one go!

I think have diff tabs hide when you exit the "Source Control" mode (vs.
Editing, Search, ...) would likely be the best.
In fact perhaps all open files should have diff enabled in that mode?

I like the enablePreview: false mode but diff tabs getting too much accumulated. I think this should be managed better in vs code, either with this feature or some other way.

Love VSCode, this is my biggest gripe though.  Workflow of double checking changes, before committing is made...... painful because of the lack of any way to close all working tree files.

I think have diff tabs hide when you exit the "Source Control" mode (vs. Editing, Search, ...) would likely be the best. In fact perhaps all open files should have diff enabled in that mode?

I got the same idea: there should be an option to close all diff tabs when going out of source control mode

I think have diff tabs hide when you exit the "Source Control" mode (vs. Editing, Search, ...) would likely be the best. In fact perhaps all open files should have diff enabled in that mode?

I got the same idea: there should be an option to close all diff tabs when going out of source control mode

Or close all diff views on commit

This issue would have been resolved with what was discussed in #85237: Adding a setting to always open working tree files in preview mode
the issue got closed by vscodebot though, so... whatever

Still would support this feature, but as a workaround I've stopped using the built-in git integration.  Works great!

@phil294 what do you use instead?

@taiya I simply accepted my fate and set workbench.editor.enablePreview to true and learned to live with it, which I think is the only feasible way to use vscode with git integration

Still would support this feature, but as a workaround I've stopped using the built-in git integration. Works great!

edamagit rules!! :+1:

@joaomoreno  I hate to (also) be that guy, but this issue has been hanging around for far too long (4+ years).  Can we get some traction on at least a path forward with some options?  Honestly at this point I'd be happy with a setting that would simply hide any working tree editors unless you are in the source control view.  It just makes no sense whatsoever to have to manually close a working tree editor in the explorer view, and I haven't seen any reason presented why anyone would actually want the current behavior.

@dlong500 It's not that we don't care to fix it. But rather the large scope around the fix and the dependency on API, since git is an extension itself. This is blocked by https://github.com/microsoft/vscode/issues/15178.

Thanks for the diplomatic answer Joao, can we do anything on our side to speed up #15178?
This UI "bug" is one of the worst behaviors in the whole vscode IMHO.
Thanks!

Thanks @joaomoreno.  I do want to clarify that I'm really not trying to be critical of vscode overall.  I love the app and appreciate all the amazing work that has been done these last many years by you and other developers.  This is just one of those things that I deal with literally every day so I would hope it would be taken off the backburner.  This is really the only thing that truly bugs me about using vscode.  If I could contribute anything useful towards a resolution I'd certainly offer my limited skillset as well.

Adding another voice to this. Does it really need to be so complicated? It seems like a lot of time has been spent thinking about the context in which to show the diff editor, intelligently closing it etc.
It doesn't have to be smart. Literally just something in the command palette that will close any tabs with (Working Tree) in their name would more than suffice at this point.

Today's Insiders release (2022-02-10) contains a new setting (git.closeDiffOnOperation) that is meant to address the need to manually close the diff editors after certain git operations. If the setting is enabled, diff editors will automatically be closed when changes are committed, discarded, staged, unstaged. Try out the new setting and let me know your feedback.

@lszomoru that's a good first step, but it would also be great if diff windows were limited to the "Source Control" tab?
(i.e. hidden and/or closed when you move to the other modes? explorer, search, ...)

Today's Insider build (2022-02-16) also contains a new command, Git: Close All Diff Editors that is available in the command palette and can be used to manually close all diff editors (both index, and working tree) independent of the value of the git.closeDiffOnOperation setting.
As for the request for the diff editors to only show when the SCM viewlet is active, I am most certain that its not currently possible. There is currently no support to associate an editor with a particular viewlet so that it is only being shown when the viewlet is active. This in scope is also greater than just SCM - imagine that you open the Extensions viewlet, search for an extension, and you click on it to show its details. It would be nice if the extension details editor would only show when the Extensions viewlet is active. I have filed a separate issue to track adding support for associating an editor with a viewlet.

I am going to close this issue for now, while the concept of associating an editor with a viewlet is being discussed in the linked issue. If you are passionate about that, please add your feedback to that issue. In case there is a positive resolution of that issue, we can adopt that capability for the diff editors.

Just a note that the newer related issue #143193 is now officially a candidate for the backlog of feature implementations, but it needs 20 upvotes to pass the threshold.  Please head over there and upvote if you haven't already.