[SPARK-22212][SQL][PySpark] Some SQL functions in Python fail with string column name

What changes were proposed in this pull request?
The issue in JIRA: SPARK-22212
Most of the functions in pyspark.sql.functions allow usage of both column name string and Column object. But there are some functions, like trim, that require to pass only Column. See below code for explanation.
>>> import pyspark.sql.functions as func
>>> df = spark.createDataFrame([tuple(l) for l in "abcde"], ["text"])
>>> df.select(func.trim(df["text"])).show()
+----------+
|trim(text)|
+----------+
|         a|
|         b|
|         c|
|         d|
|         e|
+----------+
>>> df.select(func.trim("text")).show()
[...]
Py4JError: An error occurred while calling z:org.apache.spark.sql.functions.trim. Trace:
py4j.Py4JException: Method trim([class java.lang.String]) does not exist
        at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
        at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:339)
        at py4j.Gateway.invoke(Gateway.java:274)
        at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
        at py4j.commands.CallCommand.execute(CallCommand.java:79)
        at py4j.GatewayConnection.run(GatewayConnection.java:214)
        at java.lang.Thread.run(Thread.java:748)

This is because most of the Python function calls map column name to Column in the Python function mapping, but functions created via _create_function pass them as is, if they are not Column. On the other hand, few functions that require the column name has been moved functions_by_column_name, and are created by _create_function_by_column_name.
Note that this is only Python-side fix. Some Scala functions still do not have method to call them by string column name.
How was this patch tested?
Additional Python tests where written to accommodate this. It was tested via UnitTest in IDE and the overall python\run_tests script.

Test build #82507 has started for PR 19443 at commit 9e52c63.

Test build #82507 has finished for PR 19443 at commit 9e52c63.

This patch fails Python style tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/82507/
Test FAILed.

This might look okay within Python side because the fix looks minimised and does not actually increase complexity much; however, I think we focus on API consistency between other languages in general. In this sense, I think we tend to avoid adding those with string parameters in Scala side, please see https://github.com/apache/spark/pull/18144#issuecomment-304960488, https://github.com/apache/spark/pull/18144#issuecomment-304926567 and https://github.com/apache/spark/pull/18144#issuecomment-304955155. I am -0 on this because the workaround is simple anyway.

@HyukjinKwon Thanks for pointing that out. I think the argument about consistency here is valid, though, I agree with @jaceklaskowski that changes should go one way or the other, i.e. allow string column names or remove this option completely. I don't really think that is ambiguous, as functions in SQL should either accept column object or column name as string, with the exception of lit; well, and col which accepts only string. Ambiguous functions like concat should always check for type and if it's a string, force change it to Column. This enforces usage of string only as the column name, and lit if it is an actual string literal.
Also, in case of Python the argument is also a little bit different. We need to take into account that many objects like dict or Pandas' DataFrame made addressing columns by string name more Pythonic way of dealing with columns. Thus, Python (and to some extent SQL and R) users expect to be able to use columns by their string names as using a special object for column is a bit more Java (and, thus, Scala) way of looking at things. Bear in mind, that a lot of users of these interfaces are not necessarily technical and strict Column usage argument is a bit alien to them. Thus, I would argue that even if Column argument would be enforced in Java and Scala API, other APIs should keep the by-column-name call possibile, as it is now done in Python, i.e. by mapping the string names into Column.

I think the argument about consistency here is valid, though, I agree with @jaceklaskowski that changes should go one way or the other, i.e. allow string column names or remove this option completely.

Yea but to be more specific, I tend to agree with @cloud-fan's suggestion, rather deprecating the current string support first. IMHO, It should have been no such arguments if we didn't start to support string parameters.

I don't really think that is ambiguous, as functions in SQL should either accept column object or column name as string, with the exception of lit; well, and col which accepts only string. Ambiguous functions like concat should always check for type and if it's a string, force change it to Column. This enforces usage of string only as the column name, and lit if it is an actual string literal.

I think ambiguity in parameters is not the main concern but I think it's adding more complexity and growing APIs (causing maintenance cost and etc.), particularly in Scala side as discussed before.  In general, I usually go -0 or -1 if the workaround is easy and the existing usage does not look quite awkward. It is true that the current mixed (column and string types) looks a bit odd but this could be solved by deprecating it as I said above.

Also, in case of Python the argument is also a little bit different. We need to take into account that many objects like dict or Pandas' DataFrame made addressing columns by string name more Pythonic way of dealing with columns. Thus, Python (and to some extent SQL and R) users expect to be able to use columns by their string names as using a special object for column is a bit more Java (and, thus, Scala) way of looking at things. Bear in mind, that a lot of users of these interfaces are not necessarily technical and strict Column usage argument is a bit alien to them. Thus, I would argue that even if Column argument would be enforced in Java and Scala API, other APIs should keep the by-column-name call possibile, as it is now done in Python, i.e. by mapping the string names into Column.

I think we should start this from consistent API support first in this case in general. I do like Pythonic way (to be more clear, Python only specific) we currently support, e.g., udf decorator, context manager support and etc. but, I mean, this case sounds not compelling enough for fixing this Python specifically alone, and this is why it's -0 not -1.

I think it's okay to wait for a few days more and for other committers who might support or like this idea before closing this. I won't stay against.
Providing more compelling reasons should be also another good option.

The only other reason for Python I can think of, if the above are not compelling enough, is that the issue with function not having call-by-column-name option is that we'll get the error only at the run-time, due to the process of how the names and types are being mapped onto JVM code. Which is partially related to the dynamic nature of typing in Python. So while this is spotted on compile time in Java/Scala, which may be annoying and considered inconsistent, in Python task may fail after hours due to this issue. Same is true for R (and SQL to some extent).

@jsnowacki, does the current fix make all other Python functions, except non-applucable ones, take string parameters BTW? I could check it by myself but I guess you took a look already.

@HyukjinKwon It takes the argument the functions imported via _create_function and tries to cast it to Column via _to_java_column functions. Before it was passing the argument as is, and, thus, some functions, like trim that didn't have String argument on the Scala API side, can take both string column name and Column object.

Yea, I mean, I just wonder if this PR targets to fix all the same cases and instances within this Python API, functions.py. Are these all cases that need to support string case within this functions.py file?

This PR fixes only the functions created using _create_function, which to what I found, were the only ones affected by the issue. Rest of the functions either have different assumption or eventually do the same thing but more explicitly. I didn't check all of the functions in functions.py nor the test does that, as the list of functions to check would have to be done manually. Nonetheless, from what I've seen all the explicitly defined functions get column object via _to_java_column, which check the type of argument and casts string column names to Column object.

I could consider going ahead if the small fix makes all the things in functions.py consistent, but I guess it is not. I think I am less sure because, IIUC, we are not even clear on what to do with Scala-side on this although I think we should rather deprecate if I have to choose one side, for now.
Let's close this for now. I guess this one should not be worth enough spending much time.

OK, closing than. Should I leave the JIRA issue or close it as well.

Let's resolve it as Later for now. Will keep my eyes on similar JIRAs and ping / cc you in the future. Thanks for bearing with me @jsnowacki.


Automatic schema generation - a superset of the manually created schema

Hi guys,
This is still a work in progress, but I've got the auto-generated schema dataframe to be a superset of the manual one (for TIMES 2.0.0), so it's a good intermediate milestone to review and merge - can you please take a look? I'm happy to talk you through what's going on if helpful.
Number of correct rows: 2667
Number of missing rows: 0
Number of extra rows: 2986
A few things to note:

Since schema.xlsx is currently being used in part to filter the VD output, the current number of extra rows is a problem. We want it to be as small as possible while ensuring the schema is complete. I think making that the target for the next PR makes sense.
There are accompanying changes to the TIMES-NZ-Model-files repo which I'll put up as a PR shortly - these need to be generalized to commodities and processes that aren't currently in the model outputs.
Where it seemed appropriate, I made a few changes to a local copy of the schema (data\reference\reference_schema_df_v2_0_0.csv) as well as to the input TIMES model files. Can you please review these changes? They result in more rows in the final merged dataframe, which I think suggests that they are fixes, as you can see in the changes to data\reference\reference_combined_df_v2_0_0.csv.
At present only the Fuel field is being used for commodities, and everything else comes from the process. Probably we should retire the Sector/Subsector fields from the Commodity Description, and update the Enduse field to give correct outputs.
There are things that are mysterious to me, like why we need to define base-year rules for a handful of commodities (process_baseyear_rules in rulesets.py) - it would be great if you could get your head into what's going on here as I'm definitely out of my depth!
For drop-in biofuels and multi-split heat pumps, we are currently augmenting the dataframe (MISSING_ROWS in rulesets.py) manually - it would be good to see if we can come up with a different way of populating the final dataframe that is more explicit in the code and simplifies the creation of the schema dataframe.

I think there are at least 5 next steps:

Apply the changes to the TIMES-NZ-Model-files to make them look "tidy"
(As a separate piece of work in due course: bring the Gareth and Achini's improvements back into them. But I think that comes later)
Tidy up our descriptions to remove unnecessary fields on Commodities and on Processes
Remove unwanted "extra" rows in the final combined_df output (and potentially in the schema_df intermediate output)
Alternative mechanism for handling biofuels and multi-split heat pumps

Nice work Will! I probably need to spend the rest of today on home electrification web stuff, but will get onto this end of today if I can or tomorrow morning failing that.
A couple of brief thoughts/notes at this point:

Great that "missing rows" are encapsulated at this point in "MISSING_ROWS" in rulesets.py. As you say, looks like this is restricted to DID, DIJ, BDSL, and the (negative) emissions associated with these. And multi-split HPs for residential. As an aside, I remember asking Bakha about why multi-splits were implemented differently to other HP/AC tech, with the answer being something along the lines of 'user preference'. So issue isn't that there is a right/wrong way to do it in TIMES, more that we're inconsistent across TIMES-NZ.

@AndrewGreed can you look at this aspect of the PR in particular:

"Where it seemed appropriate, I made a few changes to a local copy of the schema (data\reference\reference_schema_df_v2_0_0.csv) as well as to the input TIMES model files. Can you please review these changes? They result in more rows in the final merged dataframe, which I think suggests that they are fixes, as you can see in the changes to data\reference\reference_combined_df_v2_0_0.csv."
So, more later, and let's convene tomorrow afternoon at latest.
Oh - and final one is that @willcattoneeca there's another two weeks where we're both at work before a 3 month period when one or both of us is away, so definitely keen to prioritize this!


Use "channel" as the "message_thread_id" when using the Telegram template

See reference in https://core.telegram.org/bots/api#sendmessage

This was a new feature from telegram, where you can specify a message_thread_id and it will become part of a named topic in the chat room.
I guess maybe it would be easier to override webhook.template_path and add the messate_thread_id.

I don't mind adding it. Just wanted to know more about it since I don't send telegram notifications myself. I also wanted to make sure that comma wasn't out of place. You're welcome to re-open this and fix the comma. Thank you!


expose stronger typed SubmitFunction

partially implements #7161
This PR adds stronger type definitions for SubmitFunction to the types genereted inside $types.d.ts. Unfortunately it is currently not possible to distinguish between Success and Invalid with the current Kit helper types. This could be implemented in a future version.
Please don't delete this checklist! Before submitting the PR, please make sure you do the following:

[x] It's really useful if your PR references an issue where it is discussed ahead of time. In many cases, features are absent for a reason. For large changes, please create an RFC: https://github.com/sveltejs/rfcs
[x] This message body should clearly illustrate what problems it solves.
[x] Ideally, include a test that fails without this PR but passes with it.

Tests

[x] Run the tests with pnpm test and lint the project with pnpm lint and pnpm check

Changesets

[x] If your PR makes a change that should be noted in one or more packages' changelogs, generate a changeset by running pnpm changeset and following the prompts. Changesets that add features should be minor and those that fix bugs should be patch. Please prefix changeset messages with feat:, fix:, or chore:.

What I really meant is: there are no helper types present to distinguish between those two.
Technically it is possible :)
I haven't had more time on friday to come up with a solution. I'll try to find some time in the coming days.


Rename ModuleLocationExpander to ExtensionLocationExpander

... including the related interface, since it's used for both Modules and Themes as well.

I thought I'll have to wait for triage. :)

Not on O2!


how to give onpress props on image tap

To Do First
<MasonryList
rerender = {true}
images = {photoGroup[albumname]}
onPressImage = {({item, index}) => this._openImage}
columns={3}
/>
Lue Hang

plz anybody can help me

Hi, you can use the completeCustomComponent.

Props
Description
Type
Default

customImageComponent
Use a custom component to be rendered for the image as long as the component follows the standard interface of the react-native Image component. Version *1.2.2 update.
React.Component
Image module import of react-native

Take a look at the react-native-camera-roll-selector.

Can you give an example of completeCustomComponent @Luehang ?
Thanks.


Draft: Render markdown by converting through asciidoc with pandoc

Use pandoc to convert markdown to asciidoc, then convert the asciidoc to html using asciidoctor.
This has what I consider to be a blocking bug that would only be fixable in the upstream pandoc. Whenever there are multiple instances of ++ on the same line, asciidoc interprets the text in between pairs of ++ to be a "inline passthrough". This makes it hard to use asciidoc to talk about C++, requiring special workarounds.
This mangles, for example, the atomic readme.
Correct, current rendering:

Incorrect, rendering in this PR:

Notice how the link text is not correct and it says C and C11 instead of C++ and C++11.
Here is a minimal repro using the editor at asciidoc.org:

It is probably a bug in pandoc that the ++  are not getting escaped. There are multiple open issues in pandoc around weird asciidoc escaping that seem similar, for example https://github.com/jgm/pandoc/issues/2337. We could consider trying to fix the issue in pandoc, but it'd probably take me at least several days to understand the code.
To see the results on staging, someone will have to clear the rendered content cache. Alternatively, I could change the cache key used for rendered readmes.
Fixes #1328

Can you preprocess the md file and escape the "++" yourself, so pandoc doesn't mess it up?

Not without breaking other things because escaping is context dependent:
C++ should be escaped here in regular text
```
C++ should not be escaped here in a code block
```

The only way to robustly do it is to fully parse the markdown into an abstract syntax tree, which is the approach pandoc takes.

I don't have answers unfortunately...

Closing for now, as there's no clear path forward.


perl-packages: don't use openssl_1_0_2

Motivation for this change
https://github.com/NixOS/nixpkgs/pull/80746#issuecomment-590562561
#80746
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@GrahamcOfBorg build spamassassin


Nice to have bank name/lender name in exported file (.csv)

As a consumer it would be nice to have the the bank name/lender name listed in one of the columns
when exporting.
As far I can see, you can get the lender name , but need to use the lender id column and then
go to: http://www.ffiec.gov/hmdaadwebreport/DisWelcome.aspx
and look it up by lender id.

The video even says you can get "The name of the lender" https://www.youtube.com/watch?v=wR9Tsdqgmuk&t=125
There is a csv mapping respondent_id to institution but it is from 2015 and doesn't have a source referenced so not sure how to regenerate a new one.


More test cleanup

Remove nullspace entity maps and direct IoCManager resolves.

Any reason for removing entities being spawned in nullspace in these tests?


RelationQueryService query should be async

Hello guys,
One thing I think it would be useful is that the RelationQueryService should support async for virtual relations. At the moment you can't use async response for the query method.
e.g:

@QueryService(TodoItemReferenceDTO)
export class TodoItemService extends RelationQueryService<TodoItemReferenceDTO> {
  constructor(@InjectQueryService(SubTaskEntity) readonly subTaskService: QueryService<SubTaskEntity>) {
    super({
      // the name of the relation
      subTasks: {
        service: subTaskService,
        // a query factory that will take in the reference to create a query.
        async query: (todoItemReferenceDTO) => (
            // Do some database request or whatever
            return { filter: { todoItemId: { eq: todoItemReferenceDTO.id } } }
        ),
      },
    });
  }
}

Good idea!
Just out of interest: what are you planning to do there that needs async?

I was thinking to use this in a virtual relation but I need to touch the database first.


Added a function to get DBCluster.ReaderEndpoint

Hey there,
did you mean to send this PR to me or to your fork of this repo?

I wasn't sure if your project was meant to be a collection of examples, or a tool kit.  If it wasn't your intention to have a collection of examples, then I should not be making a PR against your project.

Oh cool, well thanks!
The purpose of this was to have a deployable example to go with a talk I presented at our AWS Michigan Meetup. https://www.youtube.com/watch?v=SXf1HFuJP-4
If you want to add in the update for CFN, Build script, and update the README.md I'd gladly evaluate and merge it in. I'm slated to talk again next month about CloudFormation and lambda with Serverless Application Model.

Added building to the scripts, and started an aurora.json.
With your structure, I'm not sure if I should include additional network configuration in the aurora.json, or if I should modify vpc.json for the network, or if there should be another stack for the subnets.
The RDS setup seems to end up with quite a few parameters. Technically not a problem, but may complicate a demo.

Another complication.  It appears that the ReaderEndpoint is the Endpoint, till the second instance comes up, but the cluster is available to get a ReaderEndpoint from before it completes.  Looks like it will need some additional dependencies.

Possibly another example would be something to populate MasterUserPassword.  It could be a top parameter, passed through though.


Avoid downloading shasums if using tarPath

If using a manually provided tarPath the content shasums aren't actually computed and downloading the remote shasums is a bit of a waste.
This avoids the call, and makes it so you can provide a local tarball with the necessary source files without any external network calls.

@TooTallNate Can I get some eyes on this, it is a simple change and will help immensely. I currently have to run an internal fork of node-gyp to prevent the shasum download on our internal servers (which don't have network access to the internet).

Thanks!

:smile:


Update Contributing Guide

The contributing guide is incomplete and missing steps (ie compiling local docker containers, deploying to minikube, etc)

@chainlink was this updated by any chance?

Doesn't appear to be


bug: Error on executing ionic serve

Installed the latest stable version of node/npm and angular cli (both globally). My angular projects are working fine (i.e. ng serve works fine).
node -v
v12.14.0
npm -v
6.13.4
Then i installed ionic - npm install – g ionic
Then created my ionic project and ran ionic serve. But it throws an error:
ng run app:serve --host=<IP_ADDRESS> --port=8100
[ng] The system cannot find the path specified.
[ng] internal/modules/cjs/loader.js:800
[ng] throw err;
[ng] ^
[ng] Error: Cannot find module ‘D:\0. Mayank 2020 - Laptop@angular\cli\bin\ng’
[ng] at Function.Module._resolveFilename (internal/modules/cjs/loader.js:797:15)
[ng] at Function.Module._load (internal/modules/cjs/loader.js:690:27)
[ng] at Function.Module.runMain (internal/modules/cjs/loader.js:1047:10)
[ng] at internal/main/run_main_module.js:17:11 {
[ng] code: ‘MODULE_NOT_FOUND’,
[ng] requireStack:
[ng] }
[ERROR] ng has unexpectedly closed (exit code 1).
The Ionic CLI will exit. Please check any output above for error details.

Thereafter I installed an earlier version of ionic - i.e. 4,12,0. But the error persists.
I am using Git Bash terminal on windows. Tried the same in command prompt too but the same error is thrown.
My package.json file:
{
“name”: “hello-world2”,
“version”: “0.0.1”,
“author”: “Ionic Framework”,
“homepage”: “https://ionicframework.com/”,
“scripts”: {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
“private”: true,
“dependencies”: {
"@angular/common": "~8.1.2",
"@angular/core": "~8.1.2",
"@angular/forms": "~8.1.2",
"@angular/platform-browser": "~8.1.2",
"@angular/platform-browser-dynamic": "~8.1.2",
"@angular/router": "~8.1.2",
"@ionic-native/core": "^5.0.0",
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic/angular": "^4.7.1",
"core-js": "^2.5.4",
"rxjs": "~6.5.1",
"tslib": "^1.9.0",
"zone.js": "~0.9.1"
},
“devDependencies”: {
"@angular-devkit/architect": "~0.801.2",
"@angular-devkit/build-angular": "~0.801.2",
"@angular-devkit/core": "~8.1.2",
"@angular-devkit/schematics": "~8.1.2",
"@angular/cli": "~8.1.2",
"@angular/compiler": "~8.1.2",
"@angular/compiler-cli": "~8.1.2",
"@angular/language-service": "~8.1.2",
"@ionic/angular-toolkit": "^2.1.1",
"@types/jasmine": "~3.3.8",
"@types/jasminewd2": "~2.0.3",
"@types/node": "~8.9.4",
"codelyzer": "^5.0.0",
"jasmine-core": "~3.4.0",
"jasmine-spec-reporter": "~4.2.1",
"karma": "~4.1.0",
"karma-chrome-launcher": "~2.2.0",
"karma-coverage-istanbul-reporter": "~2.0.1",
"karma-jasmine": "~2.0.1",
"karma-jasmine-html-reporter": "^1.4.0",
"protractor": "~5.4.0",
"ts-node": "~7.0.0",
"tslint": "~5.15.0",
"typescript": "~3.4.3"
},
“description”: “An Ionic project”
}

I have installed npm, angular cli and ionic globally. So the folder where my projects are should not matter. Also, my angular apps are working fine, which means my npm and angular cli is ok. The problem is related to ionic.
My ng module is in C:\Users\MAYANK\AppData\Roaming\npm\node_modules@angular\cli\bin (installed globally)
But ionic serve is complaining that it cannot find ng module in D:\0. Mayank 2020 - Laptop@angular\cli\bin\ng , where my projects are !!!


getColorSchemeSelector returns the wrong selector when multiple are present

Steps to reproduce
Link to live example: https://codesandbox.io/s/brave-euler-y5ghwt?file=/src/Demo.tsx
Steps:

Use the new CssVarsProvider
Create two wrapper elements to force the theme mode (with data-mui-color-scheme)
Style a component using the theme selector

    <Box
      sx={(theme) => ({
        height: 100,
        width: 100,
        backgroundColor: "primary.main",
        [theme.getColorSchemeSelector("dark")]: {
          backgroundColor: "error.main"
        }
      })}
    />

Current behavior
The dark mode styles are being applied (because there is a dark mode ancestor in the tree) even though the nearest parent element is setting light mode.
Expected behavior
The component should be styled using the light theme rules/values since the nearest parent element specifies light theme.
Context
I'm noticing this in a storybook project where I am trying to show the dark mode styles and light mode styles for a component side by side.
Your environment

npx @mui/envinfo
Using Chrome
  System:
    OS: macOS 14.5
  Binaries:
    Node: 20.11.0 - /usr/local/bin/node
    npm: 10.2.4 - /usr/local/bin/npm
    pnpm: 9.0.5 - /opt/homebrew/bin/pnpm
  Browsers:
    Chrome: 126.0.6478.183
    Edge: Not Found
    Safari: 17.5

Search keywords: CssVars Theme getColorSchemeSelector

useColorScheme() also does not return the expected mode. Is the appropriate way to do this to use a second CssVarsProvider instead of just using the element attribute on a div?

This is expected from the styles that you use:
<Box
  sx={(theme) => ({
    height: 100,
    width: 100,
    backgroundColor: "primary.main",
    [theme.getColorSchemeSelector("dark")]: { // << this has higher specificity
      backgroundColor: "error.main"
    }
  })}
/>

I'm noticing this in a storybook project where I am trying to show the dark mode styles and light mode styles for a component side by side.

To achieve this, I suggest attaching light and dark element in the same level:

  …components

  …components

Thanks for the reply @siriwatknp — I understand what you are saying (and having a bunch of nested containers is probably an edge case that doesn't warrant much effort).

To achieve this, I suggest attaching light and dark element in the same level:

This should work for my particular case, but perhaps not for a more general case where someone needs to nest themes. I think maybe this could be explained better in the documentation. It appears that there is not a way to actually nest themes like there was before with the ThemeProvider.
The docs say by using the data-mui-color-scheme attribute, you can force a particular element/children to appear  as if they are in a different mode, but they aren't actually in that mode: https://mui.com/material-ui/experimental-api/css-theme-variables/customization/#force-a-specific-color-scheme
You can see that in this demo as well (Buttons are styled differently because of the attribute, but both report being in the same mode): https://codesandbox.io/p/sandbox/withered-paper-7dxkzh?file=%2Fsrc%2FDemo.tsx%3A8%2C1&workspaceId=e74d666b-0caf-4132-8ad3-e66da26e8e7e
If it's true that you can't actually nest themes, then I think it would help to be more explicit about that in the documentation.

The issue with the mode can also be seen in MUI components that use theme.palette.mode (e.g., Breadcrumbs). If you use the breadcrumbs in a container with data-mui-color-scheme="dark" they still use colors from the light mode (because the mode is not actually changed in this container).
Example: https://codesandbox.io/p/sandbox/sharp-waterfall-kx4wtw?file=%2Fsrc%2FDemo.tsx

The Breadcrumbs should only be using the grey[100] color if the mode is light, but you can see in the demo it's used for both light and dark containers.
https://github.com/mui/material-ui/blob/next/packages/mui-material/src/Breadcrumbs/BreadcrumbCollapsed.js#L15

The Breadcrumbs are just one example, but I've seen a number of other affected components.


Add a HTTP1 client example with readme.

Add an HTTP1 client example. It is only a simple echo which closely resembles the TCP and UDP echo examples.
Motivation:
To provide a simple example of the HTTP1 client pipeline.
To create a comparable example to the TCP and UDP demos to show what extra steps are needed for an HTTP level request and response.
Modifications:
Adds a NIOHTTP1Client example in a main file.
Adds a readme to the NIOHTTP1Client example.
Result:
There is now a simple example of how to send an HTTP1 client request to the server.

@swift-nio-bot test this please

@swift-nio-bot test this please


add slack notification cli flag

This pull request adds sending of notifications to slack channels.
Please review the glide.yaml and glide.lock files

This app already uses logrus which can be hooked to slack - why not just use that? (unfortunately that doesn't work for email, since logrus email integration only sends errors)

Hey, the idea is pretty cool, I would really enjoy slack notification for watchtower.
If you still want to contribute on this feature, look at amazing work of @rdamazio here https://github.com/v2tec/watchtower/pull/106 and you can try to implement Slack notification with logrus and this integration https://github.com/johntdyer/slackrus

Yeah, would be great to have this included in the same release as the email notifications.

I'll see if I am able to change everything to use logrus/slackrus

See #113


[helm] bump helm version to 2.15.0

does what it says in the tin
Helm 2.15.0 changelog: https://github.com/helm/helm/releases/tag/v2.15.0

[x] Chart version not bumped (the versions are all bumped and released at the same time)
[ ] README.md updated with any new values or changes
[ ] Updated template tests in ${CHART}/tests/*.py
[ ] Updated integration tests in ${CHART}/examples/*/test/goss.yaml

Elasticsearch chart lint is failing with Helm 2.15.0:
10:22:33 helm lint --strict ./
10:22:33 Error: 1 chart(s) linted, 1 chart(s) failed
10:22:33 ==> Linting ./
10:22:33 [ERROR] Chart.yaml: apiVersion is required
10:22:33 [ERROR] templates/: render error in "elasticsearch/templates/service.yaml": template: elasticsearch/templates/service.yaml:24:14: executing "elasticsearch/templates/service.yaml" at <.Values.service.nodePort>: map has no entry for key "nodePort"

elastic+helm-charts+pull-request+template-testing/227/CHART=elasticsearch

jenkins test this please


onPhotoLongPress event does not provide the selected media

Steps to reproduce:

Bring up a photo grid
Select a photo to view the single photo
Long press on the image

Expected to get the selected media object.  However, it on passes in a Proxy.  The following is the context of the passed in parameter to onPhotoLongPress.
Any ideas?
Chris
Proxy {dispatchConfig: Object, _targetInst: Constructor, _dispatchListeners: null, isDefaultPrevented: function, isPropagationStopped: function…}[[Handler]]: Object[[Target]]: ResponderSyntheticEvent[[IsRevoked]]: false

Thanks for reporting @spacegraym3!
I just checked the codee and I guess you're right. Do you have some time to create a PR for this? Editing this line to make it pass media object to the parent component should be enough: https://github.com/halilb/react-native-photo-browser/blob/master/lib/FullScreenContainer.js#L228
I could also make the change and test it when I get some free time.

Yes, I realized after submitting this that I made the change.  I'll create
a pull request in the next few days.
Thanks!
On Fri, Jul 28, 2017 at 4:07 AM, Halil Bilir<EMAIL_ADDRESS>wrote:

Thanks for reporting @spacegraym3 https://github.com/spacegraym3!
I just checked the codee and I guess you're right. Do you have some time
to create a PR for this? Editing this line to make it pass media object to
the parent component should be enough: https://github.com/halilb/
react-native-photo-browser/blob/master/lib/FullScreenContainer.js#L228
I could also make the change and test it when I get some free time.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/halilb/react-native-photo-browser/issues/58#issuecomment-318625315,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAwhEaYZcdXzsr7XSjW2eg_t2U9FltW0ks5sScEEgaJpZM4OmPXC
.

I just merged #63 and this should be supported in version 0.4.0.
Thans again @spacegraym3!


feat: suggested words marking

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

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.006%) to 5.757%

Totals

Change from base Build<PHONE_NUMBER>4:
-0.006%

Covered Lines:
159

Relevant Lines:
3062

💛  - Coveralls

The functionality is implemented in PR https://github.com/sonic16x/interslavic/pull/347


Readiness probe failed: connect: connection refused

What's wrong?
Following deployment of the agent using a Helm chart to Kubernetes, the readinessProbe consistently fails with a "connection refused" error. We are only using our own container repository for this deployment, which acts as a proxy for the original container repository on Docker Hub.
Steps to reproduce
Use this deployment (original container repo):
# -- Overrides the chart's name. Used to change the infix in the resource names.
nameOverride: null

# -- Overrides the chart's computed fullname. Used to change the full prefix of
# resource names.
fullnameOverride: null

## Global properties for image pulling override the values defined under `image.registry` and `configReloader.image.registry`.
## If you want to override only one image registry, use the specific fields but if you want to override them all, use `global.image.registry`
global:
  image:
    # -- Global image registry to use if it needs to be overriden for some specific use cases (e.g local registries, custom images, ...)
    registry: "docker.io"

    # -- Optional set of global image pull secrets.
    pullSecrets: []

  # -- Security context to apply to the Grafana Agent pod.
  podSecurityContext:
    fsGroup: 2000
    runAsNonRoot: true
    runAsUser: 1000

crds:
  # -- Whether to install CRDs for monitoring.
  create: false

# Various agent settings.
agent:
  # -- Mode to run Grafana Agent in. Can be "flow" or "static".
  mode: 'flow'
  configMap:
    # -- Create a new ConfigMap for the config file.
    create: false
    # -- Content to assign to the new ConfigMap.  This is passed into `tpl` allowing for templating from values.
    content: ''

    # -- Name of existing ConfigMap to use. Used when create is false.
    name: grafana-agent-config
    # -- Key in ConfigMap to get config from.
    key: config.river

  clustering:
    # -- Deploy agents in a cluster to allow for load distribution. Only
    # applies when agent.mode=flow.
    enabled: true

  # -- Path to where Grafana Agent stores data (for example, the Write-Ahead Log).
  # By default, data is lost between reboots.
  storagePath: /tmp/agent

  # -- Address to listen for traffic on. <IP_ADDRESS> exposes the UI to other
  # containers.
  listenAddr: <IP_ADDRESS>

  # -- Port to listen for traffic on.
  listenPort: 80

  # -- Scheme is needed for readiness probes. If enabling tls in your configs, set to "HTTPS"
  listenScheme: HTTP

  # --  Base path where the UI is exposed.
  uiPathPrefix: /

  # -- Enables sending Grafana Labs anonymous usage stats to help improve Grafana
  # Agent.
  enableReporting: false

  # -- Extra environment variables to pass to the agent container.
  extraEnv: []

  # -- Maps all the keys on a ConfigMap or Secret as environment variables. https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#envfromsource-v1-core
  envFrom: []

  # -- Extra args to pass to `agent run`: https://grafana.com/docs/agent/latest/flow/reference/cli/run/
  extraArgs: []

  # -- Extra ports to expose on the Agent
  extraPorts: []
  # - name: "faro"
  #   port: 12347
  #   targetPort: 12347
  #   protocol: "TCP"

  mounts:
    # -- Mount /var/log from the host into the container for log collection.
    varlog: false
    # -- Mount /var/lib/docker/containers from the host into the container for log
    # collection.
    dockercontainers: false

    # -- Extra volume mounts to add into the Grafana Agent container. Does not
    # affect the watch container.
    extra:
      - name: gfagent-tmp
        mountPath: /tmp/agent

  # -- Security context to apply to the Grafana Agent container.
  securityContext:
    readOnlyRootFilesystem: true
    allowPrivilegeEscalation: false
    capabilities:
      drop:
        - ALL

  # -- Resource requests and limits to apply to the Grafana Agent container.
  resources: {}

image:
  # -- Grafana Agent image registry (defaults to docker.io)
  registry: "docker.io"
  # -- Grafana Agent image repository.
  repository: grafana/agent
  # -- (string) Grafana Agent image tag. When empty, the Chart's appVersion is
  # used.
  tag: v0.40.3
  # -- Grafana Agent image's SHA256 digest (either in format "sha256:XYZ" or "XYZ"). When set, will override `image.tag`.
  digest: null
  # -- Grafana Agent image pull policy.
  pullPolicy: IfNotPresent
  # -- Optional set of image pull secrets.
  pullSecrets: []

rbac:
  # -- Whether to create RBAC resources for the agent.
  create: false

serviceAccount:
  # -- Whether to create a service account for the Grafana Agent deployment.
  create: true
  # -- Additional labels to add to the created service account.
  additionalLabels: {}
  # -- Annotations to add to the created service account.
  annotations: {}
  # -- The name of the existing service account to use when
  # serviceAccount.create is false.
  name: null

# Options for the extra controller used for config reloading.
configReloader:
  # -- Enables automatically reloading when the agent config changes.
  enabled: true
  image:
    # -- Config reloader image registry (defaults to docker.io)
    registry: "ghcr.io"
    # -- Repository to get config reloader image from.
    repository: jimmidyson/configmap-reload
    # -- Tag of image to use for config reloading.
    tag: v0.12.0
    # -- SHA256 digest of image to use for config reloading (either in format "sha256:XYZ" or "XYZ"). When set, will override `configReloader.image.tag`
    digest: ""
  # -- Override the args passed to the container.
  customArgs: []
  # -- Resource requests and limits to apply to the config reloader container.
  resources:
    requests:
      cpu: "1m"
      memory: "5Mi"
  # -- Security context to apply to the Grafana configReloader container.
  securityContext:
    readOnlyRootFilesystem: true
    allowPrivilegeEscalation: false
    capabilities:
      drop:
        - ALL

controller:
  # -- Type of controller to use for deploying Grafana Agent in the cluster.
  # Must be one of 'daemonset', 'deployment', or 'statefulset'.
  type: 'deployment'

  # -- Number of pods to deploy. Ignored when controller.type is 'daemonset'.
  replicas: 2

  # -- Annotations to add to controller.
  extraAnnotations: {}

  # -- Whether to deploy pods in parallel. Only used when controller.type is
  # 'statefulset'.
  parallelRollout: true

  # -- Configures Pods to use the host network. When set to true, the ports that will be used must be specified.
  hostNetwork: false

  # -- Configures Pods to use the host PID namespace.
  hostPID: false

  # -- Configures the DNS policy for the pod. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
  dnsPolicy: ClusterFirst

  # -- Update strategy for updating deployed Pods.
  updateStrategy: {}

  # -- nodeSelector to apply to Grafana Agent pods.
  nodeSelector: {}

  # -- Tolerations to apply to Grafana Agent pods.
  tolerations: []

  # -- Topology Spread Constraints to apply to Grafana Agent pods.
  topologySpreadConstraints: []

  # -- priorityClassName to apply to Grafana Agent pods.
  priorityClassName: ''

  # -- Extra pod annotations to add.
  podAnnotations: {}

  # -- Extra pod labels to add.
  podLabels: {}

  # -- Whether to enable automatic deletion of stale PVCs due to a scale down operation, when controller.type is 'statefulset'.
  enableStatefulSetAutoDeletePVC: false

  autoscaling:
    # -- Creates a HorizontalPodAutoscaler for controller type deployment.
    enabled: false
    # -- The lower limit for the number of replicas to which the autoscaler can scale down.
    minReplicas: 2
    # -- The upper limit for the number of replicas to which the autoscaler can scale up.
    maxReplicas: 5
    # -- Average CPU utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetCPUUtilizationPercentage` to 0 will disable CPU scaling.
    targetCPUUtilizationPercentage: 0
    # -- Average Memory utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetMemoryUtilizationPercentage` to 0 will disable Memory scaling.
    targetMemoryUtilizationPercentage: 80

    scaleDown:
      # -- List of policies to determine the scale-down behavior.
      policies: []
        # - type: Pods
        #   value: 4
        #   periodSeconds: 60
      # -- Determines which of the provided scaling-down policies to apply if multiple are specified.
      selectPolicy: Max
      # -- The duration that the autoscaling mechanism should look back on to make decisions about scaling down.
      stabilizationWindowSeconds: 300

    scaleUp:
      # -- List of policies to determine the scale-up behavior.
      policies: []
        # - type: Pods
        #   value: 4
        #   periodSeconds: 60
      # -- Determines which of the provided scaling-up policies to apply if multiple are specified.
      selectPolicy: Max
      # -- The duration that the autoscaling mechanism should look back on to make decisions about scaling up.
      stabilizationWindowSeconds: 0

  # -- Affinity configuration for pods.
  affinity: {}

  volumes:
    # -- Extra volumes to add to the Grafana Agent pod.
    extra:
      - name: gfagent-tmp
        emptyDir: {}

  # -- volumeClaimTemplates to add when controller.type is 'statefulset'.
  volumeClaimTemplates: []

  ## -- Additional init containers to run.
  ## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
  ##
  initContainers: []

  # -- Additional containers to run alongside the agent container and initContainers.
  extraContainers: []

service:
  # -- Creates a Service for the controller's pods.
  enabled: true
  # -- Service type
  type: ClusterIP
  # -- NodePort port. Only takes effect when `service.type: NodePort`
  nodePort: 31128
  # -- Cluster IP, can be set to None, empty "" or an IP address
  clusterIP: ''
  # -- Value for internal traffic policy. 'Cluster' or 'Local'
  internalTrafficPolicy: Cluster
  annotations: {}
    # cloud.google.com/load-balancer-type: Internal

serviceMonitor:
  enabled: false
  # -- Additional labels for the service monitor.
  additionalLabels: {}
  # -- Scrape interval. If not set, the Prometheus default scrape interval is used.
  interval: ""
  # -- MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
  # ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
  metricRelabelings: []
  # - action: keep
  #   regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
  #   sourceLabels: [__name__]

  # -- Customize tls parameters for the service monitor
  tlsConfig: {}

  # -- RelabelConfigs to apply to samples before scraping
  # ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
  relabelings: []
  # - sourceLabels: [__meta_kubernetes_pod_node_name]
  #   separator: ;
  #   regex: ^(.*)$
  #   targetLabel: nodename
  #   replacement: $1
  #   action: replace
ingress:
  # -- Enables ingress for the agent (faro port)
  enabled: false
  # For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
  # See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
  # ingressClassName: nginx
  # Values can be templated
  annotations:
    {}
    # kubernetes.io/ingress.class: nginx
    # kubernetes.io/tls-acme: "true"
  labels: {}
  path: /
  faroPort: 12347

  # pathType is only for k8s >= 1.1=
  pathType: Prefix

  hosts:
    - chart-example.local
  ## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
  extraPaths: []
  # - path: /*
  #   backend:
  #     serviceName: ssl-redirect
  #     servicePort: use-annotation
  ## Or for k8s > 1.19
  # - path: /*
  #   pathType: Prefix
  #   backend:
  #     service:
  #       name: ssl-redirect
  #       port:
  #         name: use-annotation

  tls: []
  #  - secretName: chart-example-tls
  #    hosts:
  #      - chart-example.local

System information
No response
Software version
Grafana Agent 0.40.3
Configuration
No response
Logs
Readiness probe failed: Get "http://<IP_ADDRESS>:80/-/ready": dial tcp <IP_ADDRESS>:80: connect: connection refused

Hi Guys,
Thanks for all the responses. Got it working now. For some reason I had to change the port to 12345.
What is the difference between the Grafana Agent and Grafana Alloy?
BR,
Patrick

Thanks for all the responses. Got it working now. For some reason I had to change the port to 12345.

That's strange, it sounds like it might be a bug somewhere in the chart since the readinessProbe should be bound to the listenPort setting on the Helm chart.

What is the difference between the Grafana Agent and Grafana Alloy?

Grafana Alloy is the evolution of flow mode, renamed in part to make a splash for the 1.0 release (Alloy was released as 1.0). There are minor differences to be aware of when migrating, but Grafana Alloy is Flow mode, with the same concepts, configuration, and components.

That's weird as indeed, the readiness probe reuses the listenPort.
https://github.com/grafana/alloy/blob/3201389252d2c011bee15ace0c9f4cdbcb978f9f/operations/helm/charts/alloy/templates/containers/_agent.yaml#L50-L56
Could it be related to this change last month for merging the agent and alloy keys, and it picking up some other default?
https://github.com/grafana/alloy/blob/3201389252d2c011bee15ace0c9f4cdbcb978f9f/operations/helm/charts/alloy/templates/containers/_agent.yaml#L2


Weird scroll jump when scrolling and then clicking in a buffer

When a scroll in the editor put the cursor out of the screen and then clicking in the buffer to put the cursor somewhere, the editor's scroll unexpectedly changes.

Note that there's no jump when the cursor is already visible in the buffer, it really happens only when the cursor is out of the screen.


Using a fallback connection in Bucket

This is an alternative fix to #728, by way of making connection be optional.
This has an effect of cascading through everything since ACL and Blob both use the connection of the Bucket.
Note especially the changes to get_bucket and create_bucket, which passes None through to the Bucket() constructor and lets the environment dictate the connection (e.g. in a batch).

@tseaver Do you think bucket.connection being a non-deterministic value will be confounding?

Coverage remained the same at 100.0% when pulling 69c321f40123759306f7dfe3c0274d78bd4653e8 on dhermes:bucket-connection-fallback into d34a15ed8cefe722233cd183866bcd9eb325439e on GoogleCloudPlatform:master.

Coverage remained the same at 100.0% when pulling 69c321f40123759306f7dfe3c0274d78bd4653e8 on dhermes:bucket-connection-fallback into d34a15ed8cefe722233cd183866bcd9eb325439e on GoogleCloudPlatform:master.

Coverage remained the same at 100.0% when pulling adc470b952719237f4b2606a15e58a3fcaa5eb30 on dhermes:bucket-connection-fallback into 4d69bb34862d709c4d0abeb0e21fe19a2b1a77cd on GoogleCloudPlatform:master.

@tseaver I rebased this after merging #760 but as mentioned, it may make more sense to just pass connection to methods that require it, as in #728 (or use the implicit fallback).

Coverage remained the same at 100.0% when pulling adc470b952719237f4b2606a15e58a3fcaa5eb30 on dhermes:bucket-connection-fallback into 4d69bb34862d709c4d0abeb0e21fe19a2b1a77cd on GoogleCloudPlatform:master.

After discussing with @tseaver it has been determined that unbundling Connection and Bucket is possible, so I am closing this out. Will salvage some parts of it, like Bucket.create() and send out another PR.


Improve Backup/Restore

All indexedDB object stores used by WBE are now backed up and restored.
Clippings and Notes are no longer being duplicated after a restore.
Backup/restore buttons on the home page now do the same as as those under Options (and backs up clippings correctly).
The user is given instructions on what to do if an upgrade of WBE is causing the cross-tab message used by backup/restore to fail.

I was also working on some improvements to the cross-tab messaging so that it will skip over old tabs where the context has been lost. I'll see if I can merge mine into yours.

Oh yes, forgot to mention that we now get a popup telling the user to restart the browser or update all the WT tabs for backup/save to work

Mmm. It was a specific request that the cached date be included. My CC7 is reasonably large, so I thought if mine passes, it would still be fine, but obviously not.

Looks like the hard limit is 128 MB, although it probably isn't good to be anywhere near that size for cross-tab messaging:

https://stackoverflow.com/a/31928402
https://chromium.googlesource.com/chromium/src/+/master/ipc/ipc_channel.h#134

If it is a strong requirement to have the other indexedDB tables included (because  the data from those tables is used in the extra columns added to tables by the Table Filters feature), then perhaps we should remove the save/restore of the data from the settings tab and just go with the current save/restore buttons on the home screen?

I don't understand what you're trying to accomplish. What buttons are you talking about? Why do you need a cache table in the data backup? Ian's features have been using this for a long time, and it works well enough other than some browser quirks. Why should we remove it from the settings dialog?

Ian asked me to include those extra tables in the backup. That was the main purpose of this change. They are not only cache tables. They are also used to provide extra columns to other tables. If these so-called cache tables need to be in the backup, we obviously can't use the cross-tab messages any more.  Ian has already added backup/restore buttons to the WT home page (My Navigation page), so I am suggesting maybe people should use those rather than the two at the bottom of the options/settings dialog.

I found them on https://www.wikitree.com/wiki/Special:Home but nobody would ever know they were there. That's not where they would look to backup their extension data.

The help document can be updated and the 2 buttons on the settings dialog can be replaced with a sentence telling people where they are, maybe ven include a url

I believe this is ready now. The issue with common.js loading twice on the page has been fixed, so the semaphore should no longer be necessary. The backup logic should match what was already in this PR, except that when triggering it from the WBE settings dialog, the large tables are excluded at this time (see the compactMode argument).
Since WBE will attempt to notify each tab individually until it finds one that works, the user should not get an error unless all of their open tabs are stale. If at least one has been opened or refreshed since the extension's context changed, it should work fine.

Good job!
I think it might be worthwhile to consider not excluding CC7Database in compact mode. My CC7 is currently 9369 and the backup size of my CC7Database is 768KB, so Jim Loden's should be less than 53MB, about half the max size. :)

Yes, I don't consider it a full solution yet, but for now I didn't want to alter the existing functionality of what the settings dialog already did. The limit seems to be lower than the 128 MB in the source code, as mine is only 77 MB but still throws the error, so I'm not sure what the practical limit of the size actually would be.
Ideally, I'd like to combine options and data together into a single WBE backup file with no size limit. But also as Ian pointed out to me, if we're including all of those internal database tables in the file, that means the backup would contain potentially private data about private profiles and relationships, so we're kind of limited on where and how we can generate such a file.


move gitGraph initialization to index.js

There's no reason to have this initialization in a separate file so I moved it to index.js which allows us to have a single webpack entry point again.

Actually, I think I'll try to get this library lazy-loaded, closing this for now.

Codecov Report

Merging #9029 into master will increase coverage by 0.02%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #9029      +/-   ##
==========================================
+ Coverage   41.14%   41.16%   +0.02%
==========================================
  Files         547      547
  Lines       71353    71353
==========================================
+ Hits        29357    29376      +19
+ Misses      38278    38261      -17
+ Partials     3718     3716       -2

Impacted Files
Coverage Δ

modules/migrations/migrate.go
22.09% <0%> (-1.66%)
:arrow_down:

modules/migrations/gitea.go
8.82% <0%> (-0.64%)
:arrow_down:

models/repo.go
45.35% <0%> (-0.05%)
:arrow_down:

models/error.go
34.25% <0%> (+1.58%)
:arrow_up:

models/notification.go
68.11% <0%> (+1.73%)
:arrow_up:

modules/log/file.go
77.62% <0%> (+2.09%)
:arrow_up:

modules/task/migrate.go
28.94% <0%> (+3.94%)
:arrow_up:

modules/process/manager.go
78.37% <0%> (+4.05%)
:arrow_up:

modules/notification/ui/ui.go
80.85% <0%> (+6.38%)
:arrow_up:

Continue to review full report at Codecov.

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


Improve application protocol section

Is your suggestion related to an experience ? Please describe.

Improve application protocol landing page
Once user select the protocol have a way to depict which protocol that config form belongs to

This issue is being closed due to extended inactivity. Please feel free to reopen it if further attention is needed. Thank you for helping us keep the issue list relevant and focused!


feat(deps): upgrade compiler dependencies

Upgrades project dependencies. See details in workflow run.

Automatically created by projen via the "upgrade-compiler-dependencies-1.x" workflow

⚪ Backport skipped
The pull request was not backported as there were no branches to backport to. If this is a mistake, please apply the desired version labels or run the backport tool manually.
Manual backport
To create the backport manually run:
backport --pr 1534

Questions ?
Please refer to the Backport tool documentation


Listener onEvents not firing always

Media3 Version
1.0.0-beta02
Devices that reproduce the issue
Robolectric
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Not tested
Reproduction steps

    @Test
    fun testEvents() {
        val player = TestExoPlayerBuilder(context).build()
        sut.connect(player) {}

        player.addListener(object : Player.Listener {
            override fun onEvents(player: Player, events: Player.Events) {
                println("onEvents " + events.contains(Player.EVENT_PLAYBACK_PARAMETERS_CHANGED) + " " + events.contains(Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED))
            }

            override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters) {
                println("onPlaybackParametersChanged")
            }

            override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) {
                println("onShuffleModeEnabledChanged")
            }
        })

        player.setShuffleModeEnabled(true)
        player.setPlaybackSpeed(2f)
    }

Expected result
onEvents false true
onEvents true false
onShuffleModeEnabledChanged
onPlaybackParametersChanged

Actual result
onShuffleModeEnabledChanged
onPlaybackParametersChanged

Media
N/A
Bug Report

[ ] You will email the zip file produced by adb bugreport to<EMAIL_ADDRESS>after filing this issue.

The test is running on the main Looper and the event is firing as a message on the same Looper. So to actually receive it during the test run, you need to idle the main looper and let it deliver all pending messages by calling ShadowLooper.idleMainLooper().
In addition, ExoPlayer also provides test run helper methods in TestPlayerRunHelper that wait for certain events or interact with the player in a controlled way, e.g. runUntilPlaybackState, runUntilSleepingForOffload, playUntilPosition etc.

Thanks, I'll try that.  I wrote the test to reproduce a problem observed in an app. I'll add that and see if it works. and reopen with updated test otherwise.

Confirmed it's working
    @Test
    fun testEvents() {
        val player = TestExoPlayerBuilder(context).build()
        sut.connect(player) {}

        player.addListener(object : Player.Listener {
            override fun onEvents(player: Player, events: Player.Events) {
                println(
                    "onEvents " + events.contains(Player.EVENT_PLAYBACK_PARAMETERS_CHANGED) + " " + events.contains(
                        Player.EVENT_SHUFFLE_MODE_ENABLED_CHANGED
                    )
                )
            }

            override fun onPlaybackParametersChanged(playbackParameters: PlaybackParameters) {
                println("onPlaybackParametersChanged")
            }

            override fun onShuffleModeEnabledChanged(shuffleModeEnabled: Boolean) {
                println("onShuffleModeEnabledChanged")
            }

            override fun onMediaMetadataChanged(mediaMetadata: MediaMetadata) {
                println("onMediaMetadataChanged")
            }
        })

        val parsedUri = Uri.parse("asset://android_asset/media/mp4/testvid_1022ms.mp4")
        val mediaItem = androidx.media3.common.MediaItem.Builder()
            .setMediaId("1")
            .setUri(parsedUri)
            .setRequestMetadata(
                RequestMetadata.Builder()
                    .setMediaUri(parsedUri)
                    .build()
            )
            .setMediaMetadata(
                MediaMetadata.Builder()
                    .setDisplayTitle("title")
                    .setArtist("artist")
                    .build()
            )
            .build()

        player.shuffleModeEnabled = true
        player.setPlaybackSpeed(2f)
        player.setMediaItem(mediaItem)

        ShadowLooper.idleMainLooper()
    }


update things with new copier template, including CI scripts

ran copier and added all the necessary info, will create a PR and see if everything runs...

I also added the repo secret for codecov, so hopefully the coverage report will upload properly...

There's a permissions problem with the codecov upload, I think it might be something with me owning the repo rather than LSSTDESC or something, I will fix later and just try merging this now...


Correct typo in docs

Corrected typo in docs

Hi @AgoloRandaMoustafa , thanks for the contribution. If you look at the jsdoc page for @returns you'll see that @return is a synonym, so this is not a typo.


Still in beta

Hi,
I plan to host Angular Universal projects in my Netlify account. I see this project, still in beta after one year.
Angular is working hard to improve SSR with non destructive hydration (https://angular.io/guide/roadmap#explore-hydration-and-server-side-rendering-usability-improvements). I think many people will be back interesting into it.
Please let me know about your plans.
Thanks,
Benoît

ok

Please excuse the late reply - better late than never they say, I guess. We've released v2 of this project a couple moons ago, and it's not in beta anymore!


[FEATURE] Pre-commit hook: check for structural similarities with flay

New Feature: Pre-commit hook: check for structural similarities with flay
Introduction
This pre-commit hook forces the developers to avoid repeating code. More abou information about Flay here
Requirements
flay
Configuration
Default configuration for this hook
The options for this hook are the flay options: mass threshold, fuzzy and liberal.
   Flay:
    enabled: false
    description: 'Analyze ruby code for structural similarities with Flay'
    required_executable: 'flay'
    install_command: 'gem install flay'
    mass_threshold: 16
    fuzzy: 1
    liberal: false
    include: '**/*.rb'

Example configuration for this hook
    Flay:
      enabled: true
      include:
        - '/app/controllers/*.rb'
        - '/app/facades/*.rb'
        - '/app/libs/*.rb'
        - '/app/models/*.rb'
        - '/app/presenters/*.rb'

Tests
RSpec tests that check the following conditions:

Structural similarities found.
No structural similarities found.

AppVeyor raises this error but I'm not sure if it's related to my changes...
Check for broken symlinks............................[BrokenSymlinks] FAILED
Hook raised unexpected error
The parameter is incorrect. (87)
C:/projects/overcommit/vendor/bundle/ruby/2.3.0/gems/childprocess-0.9.0/lib/childprocess/windows/handle.rb:12:in `open'
C:/projects/overcommit/vendor/bundle/ruby/2.3.0/gems/childprocess-0.9.0/lib/childprocess/windows/process.rb:71:in `launch_process'
C:/projects/overcommit/vendor/bundle/ruby/2.3.0/gems/childprocess-0.9.0/lib/childprocess/abstract_process.rb:81:in `start'
C:/projects/overcommit/lib/overcommit/subprocess.rb:35:in `spawn'
C:/projects/overcommit/lib/overcommit/utils/file_utils.rb:49:in `win32_dir_cmd'
C:/projects/overcommit/lib/overcommit/utils/file_utils.rb:24:in `symlink?'
C:/projects/overcommit/lib/overcommit/utils.rb:264:in `broken_symlink?'
C:/projects/overcommit/lib/overcommit/hook/pre_commit/broken_symlinks.rb:6:in `block in run'
C:/projects/overcommit/lib/overcommit/hook/pre_commit/broken_symlinks.rb:6:in `select'
C:/projects/overcommit/lib/overcommit/hook/pre_commit/broken_symlinks.rb:6:in `run'
C:/projects/overcommit/lib/overcommit/hook/base.rb:45:in `block in run_and_transform'
C:/projects/overcommit/lib/overcommit/utils.rb:253:in `with_environment'
C:/projects/overcommit/lib/overcommit/hook/base.rb:45:in `run_and_transform'
C:/projects/overcommit/lib/overcommit/hook_runner.rb:162:in `run_hook'
C:/projects/overcommit/lib/overcommit/hook_runner.rb:95:in `block in consume'
C:/projects/overcommit/lib/overcommit/hook_runner.rb:92:in `loop'
C:/projects/overcommit/lib/overcommit/hook_runner.rb:92:in `consume'
Analyze with RuboCop........................................[RuboCop] OK
✗ One or more pre-commit hooks failed


Allow registering custom functions

First of all; What a great templating library!
Textwire comes with built in functions, and the docs state creating an issue if you any function suggestions.
But what about allowing users to register functions themselves, would that be something for textwire?

Thanks for the issue. The ability to define your functions is a great idea. I'll add it next

@joeyjurjens what do you think about this API?
tpl, err = textwire.NewTemplate(&textwire.Config{
	TemplateDir: "templates",
	StrFuncs: map[string]textwire.StrFunc{
		"reverse": func(s string) string {
			runes := []rune(s)

			for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
				runes[i], runes[j] = runes[j], runes[i]
			}

			return string(runes)
		},
	},
})

The same way we'll be able to define a function for any type:
tpl, err = textwire.NewTemplate(&textwire.Config{
	TemplateDir: "templates",
	StrFuncs:    map[string]textwire.StrFunc{},
	ArrFuncs:    map[string]textwire.ArrFunc{},
	IntFuncs:    map[string]textwire.IntFunc{},
	FloatFuncs:  map[string]textwire.FloatFunc{},
})

here are callback types:
type StrFunc func(string) string
type ArrFunc func([]interface{}) []string
type IntFunc func(int) int
type FloatFunc func(float64) float64

Yes! that's indeed the kind of API I would expect. :)

I went a little bit different route, the API for defining a function will be something like this:
RegisterIntFunc("double", func(num int, args ...interface{}) int {
    return num * 2
})

You can also pass arguments to custom functions:
RegisterStrFunc("concat", func(s string, args ...interface{}) string {
    arg1Value := args[0].(string)
    arg2Value := args[1].(string)

    return s + arg1Value + arg2Value
})

The usage is usual:
<span>{{ 'john'.concat(' ', 'doe') }}</span> <!-- will print: john doe -->

I'll finish tomorrow, gotta write more tests to make sure it works correctly and reflect it docs. The only downside is that it's going to be a major version update v2. For the usage you'll need to add /v2 to the package like this: github.com/textwire/textwire/v2. Just a common practice in Go

I'll update docs, but for now:
Update guide from v1 to v2

Change all the imports from github.com/textwire/textwire to github.com/textwire/textwire/v2
Run go mod tidy to update the dependencies
Change the package name from textwire.Config to config.Config in your code if you use configuration and import "github.com/textwire/textwire/v2/config". If you already have a package named config, you can alias the import like twconfig "github.com/textwire/textwire/v2/config"

Cool, thanks man! :)

Finally updated docs, add upgrade guide and custom functions information. If you encounter any issues, I'll quickly help.
Thank you, @joeyjurjens, for your feedback, in the next 2 days I'll add more built-in functions

Cool, thanks man! :)

Please keep in mind that there are new functions added in new releases, to prevent interfering with built-in functions, prefix your custom functions with "_". Built-in functions have a higher priority, they will overwrite the behavior of custom ones


Build failed when update to 8.5.2-SNAPSHOT-2017-05-08: No such file or directory

Execution failed for task ':baselibrary:processReleaseResources'.
> /Users/xjh1994/AndroidStudioProjects/xxx/baselibrary/build/generated/source/r/release/com.xxx.xxx.baselibrary/R.java (No such file or directory)

R.java exists

Why is this a ButterKnife issue?

@JakeWharton Well, as late as yesterday it worked well using 8.5.2-SNAPSHOT. And today after AS update ButterKnife dependencies.
Here are the details.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':baselibrary:processReleaseResources'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55)
        at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62)
        at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
        at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
        at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46)
        at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)
        at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
        at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
        at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:236)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.execute(DefaultTaskGraphExecuter.java:228)
        at org.gradle.internal.Transformers$4.transform(Transformers.java:169)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:106)
        at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:61)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:228)
        at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:215)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:77)
        at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:58)
        at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
        at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
Caused by: java.io.FileNotFoundException: /Users/xjh1994/AndroidStudioProjects/Prototype/baselibrary/build/generated/source/r/release/com.tianxiabuyi.prototype.baselibrary/R.java (No such file or directory)
        at com.github.javaparser.JavaParser.parse(JavaParser.java:156)
        at com.github.javaparser.JavaParser.parse(JavaParser.java:177)
        at butterknife.plugin.FinalRClassBuilder.brewJava(FinalRClassBuilder.java:36)
        at butterknife.plugin.ButterKnifePlugin$applyPlugin$1$1$1.execute(ButterKnifePlugin.kt:34)
        at butterknife.plugin.ButterKnifePlugin$applyPlugin$1$1$1.execute(ButterKnifePlugin.kt:15)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:632)
        at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:615)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:95)
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:76)
        ... 20 more

I noticed that it was updated in May 8th

It uses a slash in the path inside instead of periods, such as 'generated/source/r/release/com.tianxiabuyi.prototype.baselibrary/R.java' which should be 'generated/source/r/release/com/tianxiabuyi/prototype/baselibrary/R.java'
I'm not sure if it's ButterKnife's problem, but I'll appreciate it if you can help me. Thanks!

Got it. I'll look tomorrow.
On Wed, May 10, 2017 at 10:33 PM 徐精华<EMAIL_ADDRESS>wrote:

It uses a slash in the path inside instead of periods, such as
'generated/source/r/release/com.tianxiabuyi.prototype.baselibrary/R.java'
which should be
'generated/source/r/release/com/tianxiabuyi/prototype/baselibrary/R.java'
I'm not sure if it's ButterKnife's problem, but I'll appreciate it if you
can help me. Thanks!
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JakeWharton/butterknife/issues/952#issuecomment-300665916,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEEEdJuUAcBVv__sEvns9-e9xKaNFdtks5r4nNggaJpZM4NXbfk
.

Typo on my part. Derp. PR incoming.

@JakeWharton Good job！ Thanks very much！BTW, We all want to have integration tests. That's why we can't use the SnapShot version in production. Ha-ha.

I appreciate you checking the SNAPSHOT. I probably wouldn't have found that
bug until release.
On Thu, May 11, 2017 at 8:55 PM 徐精华<EMAIL_ADDRESS>wrote:

@JakeWharton https://github.com/jakewharton Good job！ Thanks very
much！BTW, We all want to have integration tests. That's why we can't use
the SnapShot version in production. Ha-ha.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/JakeWharton/butterknife/issues/952#issuecomment-300955188,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAEEEReqpq8UlAENvR77sbQT44GMDvnvks5r464LgaJpZM4NXbfk
.

@JakeWharton  I was having problems developing a multi module project, #779  and then I upgraded to SnapShot and found the problem. Well, have a good time!


#835 Terraform version 0.15 support

Tasks left:

[x] Add repository paths for all providers
[x] Implement tfstate version 4 with states structs
[x] Add output in tfstate file
[x] Populate ResourceInstanceObjectSrc in Resource struct
[x] Remove usage of terraform.InstanceInfo (removed in v0.15)
[x] Remove usage of terraform.InstanceState (removed in v0.15)
[x] Refactor PostConvertHook in AWS provider (done 24 out of 24)
[x] Refactor PostConvertHook in other providers (done 29 out of 29)
[ ] Address terraform-plugin-sdk error
[ ] Test out changes with bigger accounts

terraform-plugin-sdk error:
panic: gob: registering duplicate types for "*tfdiags.rpcFriendlyDiag": *tfdiags.rpcFriendlyDiag != *tfdiags.rpcFriendlyDiag

goroutine 1 [running]:
encoding/gob.RegisterName(0x86fba5b, 0x18, 0x9304b00, 0x0)
        /usr/local/opt/go/libexec/src/encoding/gob/type.go:820 +0x567
encoding/gob.Register(0x9304b00, 0x0)
        /usr/local/opt/go/libexec/src/encoding/gob/type.go:874 +0x12c
github.com/hashicorp/terraform-plugin-sdk/internal/tfdiags.init.0()
        /Users/patrykorwat/go/pkg/mod/github.com/hashicorp/terraform-plugin-sdk@v1.6.0/internal/tfdiags/rpc_friendly.go:58 +0x36

More explanation: #327, #847
Resolution: temporary disable Keycloak provider as it has a transitive dependency to terraform-plugin-sdk

It's ready?

No, I need to implement version 4 of the statefile. Got a day off now to do it.
I did try to make use of https://github.com/hashicorp/terraform/blob/6697245c18dad6848e7647598dda1ab04c2680ca/states/statefile/version3_upgrade.go#L19 but it doesn't work well with the v3 files we create - Terraform doesn't want to process the upgraded files.

How soon will it be ready?

@meshuga thanks for doing this!! ❤

Are you going to convert this for terraform 1.0?

just fyi "Terraform v1.0.0 intentionally has no significant changes compared to Terraform v0.15.5"

@meshuga do you need any help?

Have you seen https://github.com/hashicorp/terraform/pull/28874? Terraform will be able to natively create .tf files from the state in v1.10.

Have you seen hashicorp/terraform#28874? Terraform will be able to natively create .tf files from the state in v1.10.

But what generates the state?


❔[Question]: GitHub Releases

There's a tag for v12.8 but doesn't appear on releases page?

Thanks friend but I know this and I've already updated the app. I use Obtainium to update apps and it doesn't recognize v12.8 since it's not on the releases page.
Was just wondering why. A GitHub bug?

It could be a GitHub bug, I can find it normally as I said in the releases overview.
I also just tested the updater in the URL Radio app, it also finds the latest release without any problems.

Ok, sure sounds like a GitHub bug. Thank you for your quick reply. God bless!
Closing.

I found a few old comments from GitHub staff about this bug.

On occasion, this can happen when the index used to populate the release page goes out of sync with the database holding release records.

As an interim workaround, you can try editing the release and clicking on Update release without making any changes. This should force a re-sync, causing the missing releases to re-appear.

Sounds like an easy fix if it works.

It worked! All releases showing on GitHub releases page including v12.8. Now we know what's going on.
Thank you for helping experiment. 😀


List Cilium's extended supported features

What type of PR is this?
/kind cleanup

What this PR does / why we need it:
Related to https://github.com/kubernetes-sigs/gateway-api/issues/2550 (and somewhat: https://github.com/kubernetes-sigs/gateway-api/issues/2740. Guidelines on what fields would be required in the conformance report will help with parsing displayed results!)
Which issue(s) this PR fixes:
Other implementations provided listing out extended supported features, adding in Cilium's so that it can help with how conformance reports are displayed.

Fixes # n/a
Does this PR introduce a user-facing change?:

NONE

/ok-to-test

Looks like just a timeout on the failing test.
/retest

@xtineskim it looks like that latest failure was actually not a flake:
Successfully installed pathspec-0.12.1 pyyaml-6.0.1 yamllint-1.29.0
./conformance/reports/v1.0.0/cilium.yaml
  28:7      error    wrong indentation: expected 8 but found 6  (indentation)

Hopefully once that's updated this should be good to go.

Thanks @xtineskim!
/lgtm

/hold cancel
/approve


Change postgres password to a random string

What type of PR is this?
Add one of the following kinds:
/kind bug
What this PR does / why we need it:

Add capability to change the postgres db password
Change it to a random string

What is the testplan for the PR:
Deploy pixie cloud and observe
Which issue(s) this PR fixes:
Fixes https://github.com/pixie-io/pixie/issues/625
Special notes for your reviewer:
I am not sure whether the DEV postgres_deployment file should be changed. Pls let me know if it should be reverted.
Does this PR introduce a user-facing change?

NONE

This looks good but do revert the dev version. dev configs are typically used by folks working on pixie cloud to quickly test things and don't typically have any sensitive information in the db and are also not typically public to the internet. Having a default password on the dev db tends to made debugging simpler too. Hence no reason to change that!

ok to test

This looks good but do revert the dev version. dev configs are typically used by folks working on pixie cloud to quickly test things and don't typically have any sensitive information in the db and are also not typically public to the internet. Having a default password on the dev db tends to made debugging simpler too. Hence no reason to change that!

Done


Typo in Distribute settings of the image builder

Using sharedImage in the ARM template instead of SharedImage results in a validation error:
"message": "Validation failed: 'ImageTemplate.properties': Field 'distribute[0].type' has a bad value: ''.

@Deofex : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@danielsollondon - Hi, would you review the proposed revision to your article? Thanks.

#sign-off


provide metashape logging parameter

Not currently supported by metashape (1.7.1), will need to wait for api changes.


Cannot set mtime in file upload

Steps to reproduce

Upload a file with mtime timestamp for "Thu, 08 Aug 2019 04:18:13 GMT"

curl -XPUT https://<IP_ADDRESS>:9200/remote.php/webdav/file.txt einstein:relativity -d "hello" -H "X-OC-Mtime:<PHONE_NUMBER>" -vk

Get the mtime with PROPFIND

Expected result

The mtime should match with the one set in the request

Actual result

The mtime is set automatically from upload time

❯ curl -XPROPFIND https://<IP_ADDRESS>:9200/remote.php/webdav/file.txt -u einstein:relativity -d '<?xml version="1.0"?>
                <d:propfind
                   xmlns:d="DAV:"
                   xmlns:oc="http://owncloud.org/ns"
                   xmlns:ocs="http://open-collaboration-services.org/ns"
                   > \
                    <d:prop><d:getetag/><d:getlastmodified/></d:prop>
                </d:propfind>'  -k | xmllint --format -
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   649  100   415  100   234    387    218  0:00:01  0:00:01 --:--:--   605
<?xml version="1.0" encoding="utf-8"?>
<d:multistatus xmlns:d="DAV:" xmlns:s="http://sabredav.org/ns" xmlns:oc="http://owncloud.org/ns">
  <d:response>
    <d:href>/remote.php/webdav/file.txt</d:href>
    <d:propstat>
      <d:prop>
        <d:getetag>"2452963196928:062c0215"</d:getetag>
        <d:getlastmodified>Fri, 11 Sep 2020 03:43:45 +0000</d:getlastmodified>
      </d:prop>
      <d:status>HTTP/1.1 200 OK</d:status>
    </d:propstat>
  </d:response>
</d:multistatus>

tested with local server oCIS version 1.11.0
The issue is checked: the time is the same. I suggest to close
@dpakach maybe there is a different configuration?

thanks @ScharfViktor for looking into it. Works indeed. We can close this issue.

By any chance might this bug have resurfaced? I’ve started using OCIS 3.0 and using the latest macOS desktop client, all my files show upload time for file date. Full sync hasn’t completed yet so perhaps such is synced after, I’m not sure, though I think if it were syncing date it would be correct on upload.

@gennaios Thanks for the report.
@ScharfViktor Can we try to confirm that?

Can confirm that it is relevant again.
We have an api  test for that https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/coreApiWebdavUpload1/uploadFile.feature#L221
I'll figure out why the test didn't catch it

In web UI, works same as in oC10:

folder ➡ upload time
files ➡ mtime ✅

But calculation seems to be done different?

[Log]  ownCloud Web UI 7.0.0  (index.html-55a12d73.mjs, line 7)
[Log]  Infinite Scale 3.1.0-next.1+7a2afee44 Community  (index.html-55a12d73.mjs, line 7)

It happens only with uploading zero file so api test was passed
Upload file with zero bytes:
curl -XPUT https://localhost:9200/remote.php/webdav/file1.txt -ueinstein:relativity -H "X-OC-Mtime:<PHONE_NUMBER>" -vk
Upload file with content:
curl -XPUT https://localhost:9200/remote.php/webdav/file2.txt -ueinstein:relativity -d "content" -H "X-OC-Mtime:<PHONE_NUMBER>" -vk
result:

Thanks for looking into it.
Perhaps such would be out of scope yet who knows. Might it also be possible to revisit the issue of folders also having correct mtime? I’m not too familiar with the issue though I have the impression such has been the case for a long time and has never been addressed.

I see the two different Protocols

TUS -> reads mtime from Upload-Metadata
Plain PUT - > reads mtime from X-OC-Mtime

my expectation would be that we do either 1 OR 2, no mixed protocol.

iOS app doesn't send any mtime 🤔
2023-06-19 16:54:32.897000+0200 ownCloud[39393:2447844] [dbug] | [HTTP, Request, …]  POST, RequestID:D29DB304-0371-48F4-967D-D71F3936E489, URLSessionTaskID:1] [OCHTTPPipeline.m:1183|FULL]

Desktop neither https://github.com/owncloud/client/blob/master/src/libsync/propagateuploadtus.cpp#L86-L86

Desktop neither https://github.com/owncloud/client/blob/master/src/libsync/propagateuploadtus.cpp#L86-L86

Desktop sends it, but not included in the TUS metadata:
Header: { X-OC-Mtime:<PHONE_NUMBER>,

Client issues:

https://github.com/owncloud/ios-app/issues/1227
https://github.com/owncloud/client/issues/10950

Result from chat with @TheOneRing and @JammingBen
We need an ADR which covers the stuff that is not expicitly covered by the TUS protocol like the property names in the Upload metadata and which of them are required for oCIS.

@kobergj @dragonchaser I put this on our docs board. IMO it is more a DEV team task. But like to track it.

@micbar Are we still have to fix the X-OC-Mtime handing for zero sizes files?

Are we still have to fix the X-OC-Mtime handing for zero sizes files?

Yes on PUT Uploads
No on TUS Uploads

The related fix has been merged https://github.com/cs3org/reva/pull/4012
@ScharfViktor Please validate

Please validate

I re-tested it on fresh master
Upload file with zero bytes works fine:
curl -XPUT https://localhost:9200/remote.php/webdav/file1.txt -ueinstein:relativity -H "X-OC-Mtime:<PHONE_NUMBER>" -vk
Uploading file via macOS desktop client works correctly for me
Should we close ticket?


Destructive commit: string does not implement fmt.Stringer (missing String method)

d42ba59f5c11011b1df5abc536ee75821c22bdac This is a destructive commit, after update https://github.com/denisenkom/go-mssqldb/issues/745 compilation failed.
# github.com/denisenkom/go-mssqldb
vendor\github.com\denisenkom\go-mssqldb\token.go:790:70: cannot use info.Message (type string) as type fmt.Stringer in field value:
	string does not implement fmt.Stringer (missing String method)

+1. Could you please start using versions to do not brake related packages. thank you!

so am I. I got the same error.

Fixed #2 https://github.com/denisenkom/go-mssqldb/commit/1598eaf61e43a1bb1b66231abe49f8613b544d64


confluent_kafka_cluster is not recreated when type is changed from standard to dedicted

When I change the typ from standard to dedicted of a confluent_kafka_cluster plan will work (update in-place) but apply will throw an error: clusters can only be upgraded from 'Basic' to 'Standard'
If something in TF resource can't be changed I expect that terraform would recreate the resource (destroy and create) and not throw an error. Also the plan should be consistent with apply.
Test:
Build cluster with standard type:
confluent-tf-test$ terraform apply

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # confluent_kafka_cluster.cluster will be created
  + resource "confluent_kafka_cluster" "cluster" {
      + api_version        = (known after apply)
      + availability       = "MULTI_ZONE"
      + bootstrap_endpoint = (known after apply)
      + cloud              = "AZURE"
      + display_name       = "kaf-yp"
      + id                 = (known after apply)
      + kind               = (known after apply)
      + rbac_crn           = (known after apply)
      + region             = "switzerlandnorth"
      + rest_endpoint      = (known after apply)

      + environment {
          + id = "env-dd0xd"
        }

      + standard {}
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

confluent_kafka_cluster.cluster: Creating...
confluent_kafka_cluster.cluster: Creation complete after 7s [id=lkc-gn7j61]

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Change type to dedicated, plan says all is ok:
confluent-tf-test$ terraform plan
confluent_kafka_cluster.cluster: Refreshing state... [id=lkc-gn7j61]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # confluent_kafka_cluster.cluster will be updated in-place
  ~ resource "confluent_kafka_cluster" "cluster" {
        id                 = "lkc-gn7j61"
        # (9 unchanged attributes hidden)

      + dedicated {
          + cku   = 2
          + zones = (known after apply)
        }

      - standard {}

        # (2 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Note: You didn't use the -out option to save this plan, so Terraform can't guarantee to take exactly these actions if you run "terraform apply" now.

Apply throws error:
confluent-tf-test$ terraform apply
confluent_kafka_cluster.cluster: Refreshing state... [id=lkc-gn7j61]

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  ~ update in-place

Terraform will perform the following actions:

  # confluent_kafka_cluster.cluster will be updated in-place
  ~ resource "confluent_kafka_cluster" "cluster" {
        id                 = "lkc-gn7j61"
        # (9 unchanged attributes hidden)

      + dedicated {
          + cku   = 2
          + zones = (known after apply)
        }

      - standard {}

        # (2 unchanged blocks hidden)
    }

Plan: 0 to add, 1 to change, 0 to destroy.

Do you want to perform these actions?
  Terraform will perform the actions described above.
  Only 'yes' will be accepted to approve.

  Enter a value: yes

confluent_kafka_cluster.cluster: Modifying... [id=lkc-gn7j61]
╷
│ Error: error updating Kafka Cluster "lkc-gn7j61": clusters can only be upgraded from 'Basic' to 'Standard'
│
│   with confluent_kafka_cluster.cluster,
│   on main.tf line 6, in resource "confluent_kafka_cluster" "cluster":
│    6: resource "confluent_kafka_cluster" "cluster" {
│
╵```

@yvespp this issue was resolved in our latest 1.40.0 release.


Changing Default Profile Does Not Work

Environment
Microsoft Windows NT 10.0.18363.0
Terminal Verison: 0.8.10261.0
WSL1 with Ubuntu 18.04.3 LTS
Steps to reproduce
I changed the default profile from power shell to Ubuntu in settings.json using the profiles guid.

Expected behavior
Ubuntu to be default profile.
Actual behavior
The Terminal makes Ubuntu the default profile but instead of loading Ubuntu it loads powershell in the Ubuntu shell. I tried reverting the default back to powershell but it will not revert back. So even though the powershell is again the default in settings.json, it has kept loading the Ubuntu hybrid as the default. If I open WSL through powershell that does work and Ubuntu seems to work as expected then.

@tjquinn1 Could you share your profiles.json file?

Sure Here you go
{
"$schema": "https://aka.ms/terminal-profiles-schema",
"defaultProfile": "{2c4de342-38b7-51cf-b940-2309a097f518}",

"profiles":
[
    {
        // Make changes here to the powershell.exe profile
        "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
        "name": "Windows PowerShell",
        "commandline": "powershell.exe",
        "hidden": false
    },
    {
        // Make changes here to the cmd.exe profile
        "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
        "name": "cmd",
        "commandline": "cmd.exe",
        "hidden": false
    },
    {
        "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
        "hidden": false,
        "name": "Azure Cloud Shell",
        "source": "Windows.Terminal.Azure"
    },
    {
        "guid": "{2c4de342-38b7-51cf-b940-2309a097f518}",
        "hidden": false,
        "name": "Ubuntu",
        "source": "Windows.Terminal.Wsl",
        "fontFace": "Ubuntu Mono derivative Powerline",
        "background": "#58b8ae",
        "selectionBackground": "#d25bd9"
    }
],

// Add custom color schemes to this array
"schemes": [],

// Add any keybinding overrides to this array.
// To unbind a default keybinding, set the command to "unbound"
"keybindings": []

}

I see the error. I accidentally overwrote the guid of powershell.

@tjquinn1 thanks for following up!


Error Pip Installing Database

When I run pip install django-constance[database] I get no matches found: django-constance[database]

Works for me on Python 2.7.10 with pip 6.0.8. Maybe something particular to your setup/virtualenv ... ?
[07:44 am] ben@kirsche ~
$ mktmpenv
New python executable in tmp-7f50cbb5d47c631d/bin/python2.7
Also creating executable in tmp-7f50cbb5d47c631d/bin/python
Installing setuptools, pip...done.
This is a temporary environment. It will be deleted when you run 'deactivate'.
(tmp-7f50cbb5d47c631d)
[07:44 am] ben@kirsche ~/.virtualenvs/tmp-7f50cbb5d47c631d
$ pip install django-constance[database]
You are using pip version 6.0.8, however version 7.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
DEPRECATION: --download-cache has been deprecated and will be removed in the future. Pip now automatically uses and configures its cache.
Collecting django-constance[database]
  Using cached django_constance-1.1.1-py2.py3-none-any.whl
Collecting django-picklefield (from django-constance[database])
  Downloading django_picklefield-0.3.2-py2.py3-none-any.whl
Installing collected packages: django-picklefield, django-constance

Successfully installed django-constance-1.1.1 django-picklefield-0.3.2

I'm using Python 2.7 and pip 7.1.2

I just tried and doesn't work for me either.
Why that package is needed?

The error message probly comes from your shell (zsh maybe?) trying to interpret [ and ].
You need to use quotes
pip install 'django-constance[database]'

@aleszoulek you are the man. I'm using zsh. Should we document it somewhere?
(constance_test)[constance_test] pip install 'django-constance[database]'
Collecting django-constance[database]
  Downloading django_constance-1.1.1-py2.py3-none-any.whl
Collecting django-picklefield (from django-constance[database])
  Downloading django_picklefield-0.3.2-py2.py3-none-any.whl
Installing collected packages: django-picklefield, django-constance
Successfully installed django-constance-1.1.1 django-picklefield-0.3.2

Thanks to @aleszoulek.
Same issue here. I'm using zsh.
We should document it.


Create rules for each flow situation

Need to create rules for scaling, regressions, etc for each station situation. Create new target for this task.

Fixed with 5_adjust_discharge.yml


send template message in different translations (spanish)

Can the translation language be specified when using send template?
Template name does not exist in the translation
{'messaging_product': 'whatsapp', 'details': 'template name (hello_world_es) does not exist in en_US'}

Hi @adminsisifo,
the send_template and the send_templatev2 accept lang as a keyword argument. Is this what you are searching for?

Updated docs in #76.

I will mark this issue as resolved


Remove periods from end of bullet points

Bullet points comprised of sentence fragments shouldn't end in periods, so I've removed them.
I also made a few other minor improvements.
Hope that helps!

This is related to #29.


[Bug]: table with virtual columns cannot insert data

ODC version
ODC 420
OB version
Any version of OceanBase
What happened?
Virtual column fill or not fill, generate sql will have a value; Removing the value manually did not work

What did you expect to happen?
Don't need to insert data to the virtual columns
How can we reproduce it (as minimally and precisely as possible)?
1.Create a table with virtual columns
2.Inserts a value into a virtual column
Anything else we need to know?
No response
Cloud
No response

PASS


[Feature Request] Blazor VS page templates

Sme Blazor page templates would be nice.

duplicate of https://github.com/aspnet/Blazor/issues/732


Conflict with audio_service

Hi, first thanks for this great library.
I am having the following issue.
When I call FlutterForegroundTask.stop();
audio_service also stops its service, the opposite does not happen.
I looked and they both use different serviceId.
flutter_foreground_task: 1000
audio_service: 1124
Any suggestions on what it might be?

Im also having this problem.

Sorry, I was late to answer because I had a busy schedule.
I'm not familiar with the audio_service plugin. Can you be more specific about the circumstances in which the problem occurs? And I want to know where and when to call FlutterForegroundTask.start and FlutterForegroundTask.stop().

I'm closing the issue.
The bug is related to agora.io, not flutter_foreground_task or even audio_service.


Add training on PyTorch

Hello and thank you for this useful benchmark!
We (ENOT team) have submitted a pull request to the tiny repository that contains an image classification pipeline on PyTorch. We believe it can be beneficial for open submissions since PyTorch offers various specific techniques for model optimization compared to TensorFlow.

recheck


fix: typo in README

Fixes Issue🛠

Closes #65
Description👨💻

Corrected the repo name under the Contribuing guidelines in readme file.
- Music-Recommendation-System.
+ ML-Project-Drug-Review-Dataset.

Type of change📄

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

How this has been tested✅

NA
Checklist✅

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have added demonstration in the form of GIF/video file
[x] I am an Open Source Contributor

Screenshots/GIF📷

Merged!! Congrats on getting your PR merged under GSSoC23