Require one SETTINGS frame on the control stream

If the first frame of the control stream is any other frame
type, this MUST be treated as a connection error of type
H3_MISSING_SETTINGS.

https://datatracker.ietf.org/doc/html/rfc9114#section-6.2.1-2

Pretty sure I already did this one with #9864

Yeah, you did. I've been mapping which paragraph/sentence was covered by which PR, but I missed the PR covered this part as well.


Next button on articles

Articles should have a "Next" button at the end of the article to go to the next article in the section.
The last article in the section should probably not have a next button.
Related to #25

#25 will be closed by #76
Doing this in a separate PR


Suggetion for the error handler of _throttled_openai_chat_completion_acreate

https://github.com/zeno-ml/zeno-build/blob/3674429930e8fe17f23ed9d91c2b5307fb9ed668/zeno_build/models/providers/openai_utils.py#L113
I was using zeno to call OpenAI API in a batch. I find this function could be modified to a better form:
OPENAI_ERRORS = (
    openai.error.APIError,
    openai.error.TimeoutError,
    openai.error.Timeout,
    openai.error.RateLimitError,
    openai.error.ServiceUnavailableError,
    openai.error.InvalidRequestError,
    openai.error.APIConnectionError,
    openai.error.APIError,
)

async def _throttled_openai_chat_completion_acreate(
    model: str,
    messages: list[dict[str, str]],
    temperature: float,
    max_tokens: int,
    top_p: float,
    limiter: aiolimiter.AsyncLimiter,
) -> dict[str, Any]:
    # This function is modified from https://github.com/zeno-ml/zeno-build/blob/main/zeno_build/models/providers/openai_utils.py#L113 # noqa E501
    async with limiter:
        for _ in range(3):
            try:
                return await openai.ChatCompletion.acreate(
                    model=model,
                    messages=messages,
                    temperature=temperature,
                    max_tokens=max_tokens,
                    top_p=top_p,
                )
            except openai.error.InvalidRequestError:
                logging.warning(
                    "OpenAI API Invalid Request: Prompt was filtered"
                )
                return {
                    "choices": [
                        {
                            "message": {
                                "content": "Invalid Request: Prompt was filtered"  # noqa E501
                            }
                        }
                    ]
                }
            except tuple(ERROR_MESSAGES.keys()) as e:
                if isinstance(
                    e, (error.ServiceUnavailableError, error.APIError)
                ):
                    logging.warning(ERROR_MESSAGES[type(e)].format(e=e))
                else:
                    logging.warning(ERROR_MESSAGES[type(e)])
                await asyncio.sleep(10)
        return {"choices": [{"message": {"content": ""}}]}

BTW, there are actually more useful parameters for openai.ChatCompletion.acreate. Adding them would be better. 🤔
https://platform.openai.com/docs/api-reference/chat/create

Thanks @zhaochenyang20 ! Please send a pull request and I'll review it. If possible it would be nice if you could send it for both chat_completion and completion

Sure. I may have time to do this this weekend. 😂

BTW, there is actually 'TimeoutError' 🤔
module 'openai.error' has no attribute 'TimeoutError'

Here goes the PR: https://github.com/zeno-ml/zeno-build/pull/170

Fixed by #171


cleanup grammar nitpicks in the context section

Pointing it to wip, but maybe you want this in master ?

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

Project coverage is 100.00%. Comparing base (fedcb92) to head (efb8f89).
Report is 205 commits behind head on wip.

:exclamation: Your organization needs to install the Codecov GitHub app to enable full functionality.
Additional details and impacted files
@@            Coverage Diff             @@
##               wip     #1125    +/-   ##
==========================================
  Coverage   100.00%   100.00%
==========================================
  Files          152       153     +1
  Lines        25341     25475   +134
==========================================
+ Hits         25341     25475   +134

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


MLHR-1941 #resolve #comment added slice comparator

This comparator was in a previous release. Added it Malhar/util/comparator.

@ilooner please merge


Add moment-jalaali to change convert date and time to jalali calendar from

The date time slider is always in Georgian calendar, Would you please use something like
https://github.com/jalaali/moment-jalaali
to also support Jalali calendar.
Thanks.

Hi @rahimramezanian,
you can customize how the date is displayed creating a custom L.Control.TimeDimension and overwritting the method _getDisplayDateFormat.
Example:
L.Control.TimeDimensionCustom = L.Control.TimeDimension.extend({
    _getDisplayDateFormat: function(date){
        return moment(date, 'jYYYY/jM/jD');
    }
});
var timeDimensionControl = new L.Control.TimeDimensionCustom({});
map.addControl(this.timeDimensionControl);

More information at #145

Hi @bielfrontera
Thanks.


fix (date filter): added !isNaN check before creating new Date object

What kind of change does this PR introduce? (Bug fix, feature, docs update, ...)
Bug fix
What is the current behavior? (You can also link to an open issue here)
Please see: https://github.com/angular/angular.js/issues/13415#issuecomment-238309031
not solved by PR #14221 in release 1.4.12 or 1.5.8
What is the new behavior (if this is a feature change)?
Perform !isNaN(date) check in date filter before attempting to create new Date(date) object.
Does this PR introduce a breaking change?
Possibly.  If a user of the date filter expects it to throw the DateRange error if a NaN value is passed.
Please check if the PR fulfills these requirements

[ yes ] The commit message follows our guidelines: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#commit-message-format
[ no ] Tests for the changes have been added (for bug fixes / features)
[ no ] Docs have been added / updated (for bug fixes / features)

Other information:
Workaround is simple enough to pass values through a normalization filter before passing to date filter.

Does this PR introduce a breaking change?
Possibly. If a user of the date filter expects it to throw the DateRange error if a NaN value is passed.

LOL - That is hardly a problem. The real problem is for people not using Safari and expecting a Date object (with the appropriate methods) to be return for NaN, because now they will get a TypeError:
var value = NaN;   // some numeric value that can also be NaN

var date = dateFilter(value);
if (date.getTime() > someThreshold) {
  // Do this and that...
}

Before this change, the above snippet will work (date.getTime() will return NaN).
After this change, the above snppet will throw a TypeError (because date will be NaN and doesn't have a getTime() method).

Tbh, I don't think the benefits of this justify the cost.
The benefits are that we work-around one specific case (among several) of a bug in one specific browser.
The cost is that we introduce a small breaking change.
I don't think many apps will be affected by this, but people upgrading will nevertheless have to go through the whole codebase checking for situations where a value passed to dateFilter could be NaN.
--
I don't feel too strongly though. Let's see what others think.

A gree with @gkalpak


When Groups are Added to the Manage Access Dialog, You Can't Give Them Permissions

As the title states, a new group added to the manage access dialog cannot be given permissions. This is because the Access and Default checkboxes are greyed out.

Fix merged into hotfix branch for 1.6.1


Custom error page w/ ValidateAntiforgeryTokenAuthorizationFilter

Is this a Bug or Feature request?:
Question.
How do I specify a custom error page to return when the CSRF token is invalid? A Content-Length 0, HTTP 400 white page isn't very helpful when things go wrong.

@javier, can you please answer the above question?

@lol768 Thanks for contacting us.
An invalid antiforgery token is a developer/application error and not something that a user would normally run into. That said, you can create a result filter that upon 400 resolves IAntiforgery from DI and calls the method below and then redirects to a custom page to show a more descriptive error. https://github.com/aspnet/Antiforgery/blob/master/src/Microsoft.AspNetCore.Antiforgery/IAntiforgery.cs#L48
Closing this as there's no further action to be taken here.


PEP 484 .pyi Typing Support

Is your feature request related to a problem? Please describe.
I'm very frustrated when I want to know more about the things that are available to me when working with kivy, and every time I have to search in the docs. It really takes a lot of time and makes it harder and more unpleasant to work with kivy.
Adding .pyi stub files to type the objects would be really nice and make working with kivy a breeze.

How is pyi files better than looking at the source code? If your editor supports looking at the pyi files in Kivy's source code, why not just look at kivy's source code directly?
I agree that the docs should be improved so that it's easier to see at a glance what our API is, but pyi files is not meant to be a fix for this particular issue, even if it may coincidentally make simply docs lookups. And for some things, like the events supported by widgets, pyi files doesn't really support kivy's mechanisms.


Bugfix FE 311 validate name fields on register

Match the text field names with the api field names
Show display first name and display last name fields
Enforce minimum of 2 chars for name fields

Testing:
On register, must have 2 or more characters for all the name fields

Let's sync the real and display name fields which the form decorators, just like create/update user does.

Decorator added


Let's start adding author names where appropriate

many programming books have names that can be confused for similar books: e.g.  "introduction to Java". It's very helpful to browsers to see the author names
The identity of books with translated titles may not be apparent
People googling for books will more easily find our lists
(perhaps most important) Authors who make their books available for free deserve recognition

If you'd like to assist in this effort:

submit PRs for manageable sections of the lists. (10 or so books at a time.)
if there are a lot of authors, use "First Author et al."
sometimes there's no useful author, don't sweat it.
reviewing other contributors' PRs is almost as helpful to the admins as submitting new ones.

Would it be useful to add the year as well?

A previous discussion #1926 (which I see @tedyoung has found) suggested that adding the year for older books would be a good idea.


fix: fixed order of generated media queries

Proposed changes

Fixed order of media queries in the generated css
added default key to responsive values
Media queries are generated mobile-first by defaullt

Types of changes

[x] 🐛 Bugfix (non-breaking change which fixes an issue)
[x] ✨ New feature (non-breaking change which adds functionality or enhancements)

Checklist

[x] 👀 I have read the CONTRIBUTING doc
[x] ✅ Lint and unit tests pass locally with my changes
[x] 🧪 I have added tests that prove my fix is effective or that my feature works
[x] 📚 I have added the necessary documentation (if appropriate)
[x] 🔀 Any dependent changes have been merged and published in downstream modules

Codecov Report
Patch coverage: 100.00% and no project coverage change.

Comparison is base (b094895) 100.00% compared to head (ba202e3) 100.00%.

:exclamation: Current head ba202e3 differs from pull request most recent head 768a377. Consider uploading reports for the commit 768a377 to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
Additional details and impacted files
@@            Coverage Diff            @@
##              main      #728   +/-   ##
=========================================
  Coverage   100.00%   100.00%
=========================================
  Files          103       104    +1
  Lines          914       927   +13
  Branches       160       160
=========================================
+ Hits           914       927   +13

Impacted Files
Coverage Δ

packages/babel-plugin/src/utils/splitStyles.ts
100.00% <ø> (ø)

packages/babel-plugin/src/utils/css.ts
100.00% <100.00%> (ø)

packages/babel-plugin/src/utils/dynamicClasses.ts
100.00% <100.00%> (ø)

packages/babel-plugin/src/utils/orderStyles.ts
100.00% <100.00%> (ø)

packages/babel-plugin/src/visitors/component.ts
100.00% <100.00%> (ø)

packages/babel-plugin/src/visitors/css.ts
100.00% <100.00%> (ø)

packages/compiler/src/plugin.ts
100.00% <100.00%> (ø)

packages/compiler/src/utils.ts
100.00% <100.00%> (ø)

packages/core/src/parsers/createParsers.ts
100.00% <100.00%> (ø)

packages/core/src/theme/createTheme.ts
100.00% <100.00%> (ø)

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


Copy all files from docs_dir

Copying files other than ".md" files allows for image files that are linked to from other files to be copied from that directory.

Merging into my local master so I can start using this.


DRILL-8259: Supports advanced HBase persistence storage options

DRILL-8259: Supports advanced HBase persistence storage options
Description
Maximize performance with HBase as persistent storage.
Documentation
Example in drill-override.conf
sys.store.provider: {
  class: "org.apache.drill.exec.store.hbase.config.HBasePStoreProvider",
  hbase: {
    table : "drill_store",
    config: {
      "hbase.zookeeper.quorum": "zk_host3,zk_host2,zk_host1",
      "hbase.zookeeper.property.clientPort": "2181",
      "zookeeper.znode.parent": "/hbase-test"
    },
    table_config : {
      "durability": "ASYNC_WAL",
      "compaction_enabled": false,
      "split_enabled": false,
      "max_filesize":<PHONE_NUMBER>0,
      "memstore_flushsize": 536870912
    },
    column_config : {
      "versions": 1,
      "ttl": 2626560,
      "compression": "SNAPPY",
      "blockcache": true,
      "blocksize": 131072,
      "data_block_encoding": "FAST_DIFF",
      "in_memory": true,
      "dfs_replication": 3
    }
  }
}

Configuration requirements

Key
Type
Value Example
Reference

durability
String
ASYNC_WAL / SYNC_WAL / SKIP_WAL
Durability

compaction_enabled
Boolean
false
COMPACTION_ENABLED

split_enabled
Boolean
false
SPLIT_ENABLED

max_filesize
Number
10737418240
MAX_FILESIZE

memstore_flushsize
Number
536870912
MEMSTORE_FLUSHSIZE

versions
Number
1
MAX_VERSIONS

ttl
Number
2626560
TTL

compression
String
SNAPPY / LZ4
Compression$Algorithm

blockcache
Boolean
true
BLOCKCACHE

blocksize
Number
131072
BLOCKSIZE

data_block_encoding
String
FAST_DIFF / PREFIX
DataBlockEncoding

in_memory
Boolean
true
IN_MEMORY

dfs_replication
Number
3
DFS_REPLICATION

Testing
Added the TestHBaseTableProvider#testStoreTableAttributes()

@luocooong Thanks for submitting this.  I was wondering, is there a reason why we are storing these variables in drill-override.conf instead of the configuration for the storage plugin?  IMHO, it is better to put it in the config so that you don't have to restart Drill any time you make a config change

@cgivre Hi, Thank you for the questions. Actually, Drill PStore' variables are split from the storage configurations, because the goal is to define the initial variables before the Drill startup. And then, it has a different lifecycle from the storage configuration, so it is not recommended to be placed in the storage plugin.

Why compaction_enabled": false? I thought compaction is important for hbase to boost performance?

Why compaction_enabled": false? I thought compaction is important for hbase to boost performance?

As you know, HBase is a nightmare for operational services due to the complexity of the settings. The actual value in the above example is not a recommended value, no unique value is appropriate for every case, but is simply the type of value that this parameter has to fill, is "true/false", not "0/1".
And, would you mind helping me append this updated document to the drill-site?

Why compaction_enabled": false? I thought compaction is important for hbase to boost performance?

As you know, HBase is a nightmare for operational services due to the complexity of the settings. The actual value in the above example is not a recommended value, no unique value is appropriate for every case, but is simply the type of value that this parameter has to fill, is "true/false", not "0/1".
And, would you mind helping me append this updated document to the drill-site?

Of course :)

@cgivre @Z0ltrix I added two new options. If namespace is used, the namespace:table semantics are applied. And we can also use the table configuration only. The family is also an optional.

@Z0ltrix Would you mind doing a formal review on this PR?  @luocooong asked me but I don't really have enough experience with HBase to comment intelligently on this.  If you're already happy with this, all you have to do is leave a +1.

@Z0ltrix Would you mind doing a formal review on this PR? @luocooong asked me but I don't really have enough experience with HBase to comment intelligently on this. If you're already happy with this, all you have to do is leave a +1.

sorry for the late response, i would love to do the review :)


[WIP] extending gdf_generic_eq to datetime types

I'm not sure if this was the correct way to do it but here goes

Can one of the admins verify this patch?

This seems reasonable to me. Thanks for putting this in @hhuuggoo

I'm having an issue with test_hashing locally - verifying if it's something I did or if my machine is setup weird

I don't get it.
If I run make pytest then test_hashing fails for me, however if I run that test on it's own, with pytest tests/test_hashing.py then it passes

It sounds like you should open a separate issue for that....

oooh
https://github.com/gpuopenanalytics/libgdf/blob/master/python/tests/test_hashing.py#L78
 # pytest for hashing fails if called collectively on folder and if number of columns>5, but works well if called seperately like
 # pytest --cache-clear -vvs ~/libgdf/python/tests/test_hashing.py

It looks like the hashing test is failing here, which is likely expected.

rerun tests

This is failing because of
https://github.com/gpuopenanalytics/libgdf/issues/77
Merging.


Include other workspace options

Approach 1:

Build base Docker image with ubuntu along with other workspaces
Build environments over this base Docker image

Approach 2:

Build individual base docker images on local when the user selects the workspace option
Build a combined docker image with environment + individual workspace build

Goal: To find the best approach satisfying a) Latency, b) Reliability, c) Flow.
Flow: datmo init, datmo workspace-command

@asampat3090 @nmwalsh

User flow when the base already has the workspace (notebook, jupyterlab, etc.):

datmo init

# User selects environment tensorflow (workspace, environment capability present)

datmo notebook

# User runs after first *pull* - latency: t1

datmo notebook

# User runs on the already existing image (no extra time to build) - latency: t2

User flow when the workspace is decided after the environment is set up

datmo init

# User selects tensorflow (only environment capability present)

datmo notebook

# User runs after first *pull* environment and appends notebook workspace (and build over initial environment) - latency: t3

datmo jupyterlab

# User runs on already existing environment image and appends jupyter workspace (and build over initial environment) - latency: t4

Time delay is t3 >> t1 > t2 > t4

Environments to be supported
Name		    option for question			    Notes

ml-base        		(none)   	                 h5py, matplotlib, seaborn, numpy, OpenCV, Pandas, Pillow, scikit-learn, scipy, sklearn

data-science            ds-analytics			 h5py, iPython, Jupyter, matplotlib, numpy,  Pandas, Pillow, scikit-learn, scipy, sklearn, xgboost, tpot

Tensorflow		tensorflow		         Tensorflow==1.8.0
							 Keras==2.1.6

Pytorch			pytorch			         Pytorch==0.4.0

MXNet			mxnet		                 mxnet=1.1.0

Caffe		        caffe		                 caffe==1.0.0

Caffe2		        caffe2		                 caffe2==0.8.1

Torch		        torch		                 Torch7

Create a base Docker image for environments, datmo/env:base-tag tag is based on <py2,py3> and <cpu, gpu>
Create workspaces over this base environment image
Change env setup (and in init) to use datmo/env:base-tag while setting up the environment.
Runtime logic (datmo notebook or datmo jupyterlab) should take care during the action, it creates a new Dockerfile in a temp folder, datmo/env:base-tag-ws and pulls the new image for the run. Thereby, it doesn't pull the layers for datmo/env:base-tag but only required for the workspace.

https://github.com/datmo/datmo/pull/228


wandb error

I met the error： wandb: ERROR Error while calling W&B API: project not found (<Response [404]>)
I have changed the config.py about the --user-name to mine, but it doesn't work either.
Thank you for your reply.

If u are not familiar with wandb, you can just add --use_wandb in the training script and the u will use tensorboard instead. The error says you can not access to the project to log in the data, my advice is you can double check the ip&account.


[Question]: Get Host and Port from inside Docker Container

I looked at the AspDotNetCoreDemo.
It uses rancher and makes it easy to retrieve the dynamic port used while spinning up the container. Is it possible to do the same with using just a normal docker host?

The easiest way to handle this would be to just pass those as environment variables from docker into the container IMO.
And then just extract those variables via code.

I was just about to close this issue because I was just going down the wrong path anyways.
Its simple, don't need to map a port on a docker container to the host to talk to it. Any  container on the same docker network can talk to an exposed port on a container.
Sorry for opening an issue for this...but sometimes writting something down helps. And btw awesome framework. :+1:


[BUG] Don't apply parent docstring to overridden member when not selecting inherited members

Describe the bug
Individual attribute docstrings are re-applied to inherited class attributes even when not selecting inherited members. It doesn't feel right when autodocumenting a class and its subclasses in the same module, because then the attribute is documented in each one of them with the same docstring.
To Reproduce
class Base:
    VAR = 0
    """My variable."""

class Child(Base):
    VAR = 1

Screenshot

Expected behavior
When not selecting inherited members, I'd like the overwritten members to stay docstring-less, so they can be skipped with show_no_doc: false.
System (please complete the following information):

pytkdocs 0.5.x

No engagement (upvotes, comments), closing for clean up. Comment and I'll reopen!


Support copying single files instead of directories

I have a use case where my static file that I want to copy, is located in the same directory as the target index.html file. As I don't want to copy the index.html file, which is processed by parcel, it would be nice to copy only that single file or alternatively ignore the index.html in the target directory.

This is now available with 1.4.0 version of the plugin. For details please check this example.


IOSClass initialize issue

Hi team,
I found one issue, failure of Class.forName() for a class has package prefix.
I investigated this and finally I could find the root cause.
That is, IOSClass_initialize() is not called at the top of the static methods of java.lang.Class (IOSClass).
I guess IOSClass_initialize() should be called, because other translated code includes such code.
Could you please review this ?
I created two commits. The one is to reproduce the issue, and the other one is the fix.

Thank you for your comment !
Rollbacked.

Looks good -- I'll pull this as soon as our internal repository is pushed, since commits in both repositories confuses our sync tool sometimes. :-)

Thanks for your fix!

Thanks for quick review and merge !
I’m happy I could contribute. 😄


Cannot add more than one relationship to the same target table

Hi,
Current behavior (many->one relationship)

Click on column in Fact Table and choose create new relationship to target table and select column.
Click on different column in Fact Table and choose create new relationship to the same target table in step 1. However the target table is no longer visible.

Expected
I would expect the table to show up but then enable you to create an inactive relationship between the two tables.
Current Workaround
Copy/Paste the relationship and edit the column manually and set the relationship to inactive.
Regards
Toby.

Great suggestion! 2.14.3 will show tables that already have a relationship to the current table as well:


Move to Multiformats?

Hey @tehmaze!
Thanks so much for this. As you may know, we recently created the Multiformats organization to be a home for all of the multiformats - multiaddr, multihash, etc. Would you be interested in moving this repository to that organization? You would still have admin rights on the repository, but it would be a part of a wider organization. This would mean more relevant eyes on it (most likely) and better cross-repository issue tracking. We'd also add a line mentioning you as the original author, and of course your commits would stay the same.
Of course, keeping it on your profile is also cool; we'll still link to this from the main multihash repository at github.com/multiformats/multihash.
Thanks for taking the time to read this. 👍
Tracking issue, here: https://github.com/multiformats/multiformats/issues/4.

Sounds like a good plan!

@tehmaze Added you as a member! You should be able to move it over now. I'll give you admin rights (again, as you'll briefly lose them) to that repo when it is added.
 See multiformats/multiformats#6.


Rendering an arrow and stying, with referenceElement

Steps to reproduce the problem

I'm trying to reproduce a tooltip-like behavior, with a referenceElement. My code is the following:

<Popper
    referenceElement={element}
    placement='right'
>
    {({ ref, style, placement, arrowProps }) => (

            Popper element

    )}
</Popper>

In the page, the "tooltip" is on the right from the DOM element, but with no arrow.
If I would like the arrow to be shown and be pointed to the element at all placement he get, and also style the "tooltip" itself, how can I do that?

What is the expected behavior?
Tooltip should show an arrow beside him.
What went wrong?
He doesn't.
Packages versions
react-popper: 1.0.2
Code
https://codesandbox.io/s/r0lrlk54qp

Sorry I really need the codepen/codesandbox repro, otherwise I can't help you.

Added: https://codesandbox.io/s/r0lrlk54qp

You have to style your arrow to make it visible somehow. Take a look at the demo page to see an example.
https://codesandbox.io/s/qkzk25lj8j

So to style its position for the tooltip I need to condition-style the arrow?

Meaning the direction the arrow is pointing at.

react-popper only provides the left or top offset of the arrow, all the styling is deferred to the consumer.

And is there a way to use the already made Arrow component so I wouldn't have to handle the direction the arrow is pointing?
Or that if I want to use the 'referenceElement' prop, I have to manually design and implement the arrow myself?

You can copy the one of the demo, but the library doesn't provide any style except for the positions.


Maybe mistake in documentation and little problem in DataPipeline

While I was using Your library (it is great lib!), I found two strange things.
Sorry for my English.

In your documentation You write

# Create your new operation by inheriting from the Operation superclass:
class FoldImage(Operation):
    # Here you can accept as many custom parameters as required:
    def __init__(self, probability, num_of_folds):
        # Call the superclass's constructor (meaning you must
        # supply a probability value):
        Operation.__init__(self, probability)
        # Set your custom operation's member variables here as required:
        self.num_of_folds = num_of_folds

    # Your class must implement the perform_operation method:
    def perform_operation(self, image):
        # Start of code to perform custom image operation.
        for fold in range(self.num_of_folds):
            pass
        # End of code to perform custom image operation.

        # Return the image so that it can further processed in the pipeline:
        return image

Maybe in perform_operation should be images not image, cause it expects list of PIL images and I understood it only after my script failed.

Your DataPipeline.sample method uses random for outputing images and if I put for example 5 images and got 5, it is possible that I will get 5 augmented versions of one image, not augmented versions of all 5 original images, so maybe it is better to use non-random indexes?

Hi  @masyagin1998, glad you like the library :-)
Yes that's of course right, it accepts a list of images, this is an artifact from a previous version of Augmentor where all the operations accepted only one image at a time, I haven't managed to catch all the documentation when I made the change it seems. Thanks for pointing it out, I'll fix it.
As for point two, yeah in the normal Pipeline class you can call process() (instead of sample()) which does exactly what you ask, but this method is currently not implemented for the DataPipeline. I will fix that in an upcoming version.


Implement GraphQLType for Arc

I don't see any reasons why GraphQLType is implemented for Box bot not implemented for Arc. Also added ToInputValue.
I don't add FromInputValue for same reason that serde is not implemented for Rc and Arc by default: one my expect same objects to be deserialized to the same Arc which isn't true. I'm not entirely sure of whether this precaution is still useful for graphql though.

Codecov Report

Merging #212 into master will increase coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #212      +/-   ##
==========================================
+ Coverage   89.64%   89.64%   +<.01%
==========================================
  Files          96       96
  Lines       17873    17883      +10
==========================================
+ Hits        16022    16031       +9
- Misses       1851     1852       +1

Impacted Files
Coverage Δ

juniper/src/types/pointers.rs
90.9% <ø> (-0.27%)
:arrow_down:

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 915b846...b61219d. Read the comment docs.

Thanks again. ;)

@tailhook never mind, did it myself.


Replace home image + better responsiveness

also, this is how google sees our home page. not really sure why/how or if it even matters, just noting it.

What is googlebot lol?

¯\_(ツ)_/¯ it's the google crawler that indexes our site i think, so this correlates to how google sees it. dunno what it actually means...
just tried to look up what it means, but actually, i think this might be fine. gahh honestly i dont know. i dont know what im doing lol.
BUT. one thing that we do have to keep in mind is the keywords that google affiliates with our site:

if you notice that its even pulling "san" and "francisco" more than some other more important things (like "living"). i think maybe it's related to the types of tags we're using (<p> vs <h1> etc) so maybe we should have a sub heading or something that mentions living dex or something.
all this search stuff is getting me confused... (｢๑•₃•)｢ ʷʱʸ?


Relase control of "?" to vim's reverse search

I constantly use search in nerd tree to find a directory or file that I know exists in the current tree.
Unfortunately, many times the thing I am looking for is above me in the tree. so instead of / -  N I really just want to ? -
however the nerd tree help intercepts the ?
It is extrodinarily annoying. Potentially enough so to drop the pluggin.

This just made my day.  Thanks for resolving this issue in a public, googleable fashion.


pagination for long list of options

Thank you for this wonderful library.
Was wondering if there is a way to paginate a long list of options?
Alternatively, is there a way to have the list of options printed in multiple columns so as to fit as many options in the smallest rectangular space on the console as possible?
:question:

Give more example

I mean something like what ipython does:

That is,
a) Instead of listing the options vertically one below the other, list them in a rectangular fashion (kind of like the default console ls  output) and
b) Instead of printing all of the options onto the screen at once, limit the vertical width of the rectangle and "paginate" whatever doesn't fit in the rectangle in view, i.e. allow user to scroll through to the next "page" of the the "choices" by clicking the right arrow key.
Does that make sense?
If the feature doesn't exist already, let me know if/how I can help.

This is more like a new feature. I'll be glad if you are able to send a PR on this.

Thanks, I'll give it a shot.

Coool, I will be on look out


Line endings are not enforced, causing huge diffs

It should be LF and then filters on an as needed per person basis

find . -type f -print0 | xargs -0 dos2unix -ic0 | xargs -0 dos2unix -b

Oof
  File "/home/[redacted]/.cache/pypoetry/virtualenvs/dt-cli-qWsRilNO-py3.9/lib/python3.9/site-packages/bumpversion/utils.py", line 144, in replace
    with open(self.path, "wt", encoding="utf-8", newline=file_new_lines) as f:
TypeError: open() argument 'newline' must be str or None, not tuple

https://github.com/marketplace/actions/check-crlf


Step into library methods

I have an error for which I need to step into python code in site-packages (in this case virtual env from pyenv, if this matters)
However it seems that VSC steps over python library code.
How can this be changed?

Try adding "debugStdLib": true to the launch configuration in launch.json -- I think that'll do what you need!

Feature request being tracked in #2087 .


Implementing an Animated Delete Button for Enhanced User Experience

This is a(n):

[ ] Update to an existing Animated Button
[ ] Any Error
[x] Proposal to the Repository
[ ] Documentation / README.md changes

Details:
Description
As part of GSSOC (GirlScript Summer of Code), I aim to implement a delete button functionality that provides a visually appealing and interactive experience for users. When the delete button is clicked, it will remove all occurrences of the word "delete" and visually animate them into a dustbin icon.
Problem Statement
Currently, our application lacks a user-friendly way to remove instances of the word "delete." Users often have to manually edit the text or use alternative workarounds, which can be time-consuming and tedious.
Proposed Solution
Introducing a delete button that streamlines the process of removing the word "delete" from the text. Clicking the button will automatically replace all instances of the word with a dustbin icon, creating a fun and interactive visual representation of the deletion action.
Requirements
To address this issue, the following requirements need to be fulfilled:

Implement a delete button with an appropriate visual representation, such as a trash can or dustbin icon.
Detect all occurrences of the word "delete" in the text and replace them with the chosen visual representation.
Apply smooth and visually pleasing animation effects to transition the word "delete" into the dustbin icon.
Ensure that the delete functionality is accessible and works reliably across different browsers and devices.

Please assign this issue to me under GSSOC'23 (GirlScript Summer of Code).

Please check #1346


Throw extension error only when language is not supplied

Do not throw an extension error when language is specified with a message.

I did that on purpose.
The reason I put this in in the first place is the new discord functionality that displays file contents.
If you don't specify a file extension discord will not show the contents.


Tests install project under test as dependency

When running the test command on a project that has circular dependencies such that the project under test is also depended on by one of the project's dependencies, setuptools will install the depended project onto sys.path, causing problems with import mismatches or tests that run not against the current project, but against a released version.
This issue was reported in jaraco/jaraco.collections#1 as a circular dependency exists between jaraco.text <-> jaraco.collections.
The issue can be worked around by first running egg_info on the project under test, which because it's in the current working directory allows it to be resolved as the dependency for the dependencies.
It's possible this issue only affects namespace packages and that the sys.path.insert(0, ...) is sufficient to give simple packages precedence.

Since python setup.py test and tests_require have been deprecated for a while, it should be safe to close this issue, right?
We can always reopen it if there is some other information that should be considered...


can not get table abi

eosiocpp -g mytoken.abi mytoken.cpp

false: Unable to guess index type
    {}
    thread-0  abi_generator.cpp:348 guess_index_type

    {"type_name":"account"}
    thread-0  abi_generator.cpp:273 handle_decl

    {}

You should use the command like this:
$ eosiocpp -g ${contract}.abi ${contract}.hpp
--> eosiocpp -g mytoken.abi mytoken.hpp

I add a field named "id" to my struct, and my problem is fixed

 // @abi table
        struct acct {
            uint64_t id;
            asset balance;
            uint64_t frozen = 0;
            uint64_t whitelist = 1;

            uint64_t primary_key() const {
                return id;
            }
        };

My problem has been solved in this way

Please make sure your primary_key member is of type uint64_t and is the first member in the struct.


Keys not echoed

I didn't see the keys echoed on installation. I'm running dokku version 0.5.6 on Ubuntu 14.04.3 LTS, and here is all I get after installation:
-----> Cloning plugin repo https://github.com/cedricziel/dokku-deployment-keys.git to /var/lib/dokku/plugins/available/deployment-keys
Cloning into 'deployment-keys'...
remote: Counting objects: 124, done.
remote: Total 124 (delta 0), reused 0 (delta 0), pack-reused 124
Receiving objects: 100% (124/124), 21.63 KiB | 0 bytes/s, done.
Resolving deltas: 100% (51/51), done.
Checking connectivity... done.
-----> Plugin deployment-keys enabled
-----> Migrating zero downtime env variables. The following variables have been deprecated
=====> DOKKU_SKIP_ALL_CHECKS DOKKU_SKIP_DEFAULT_CHECKS
=====> Please use dokku checks:[disable|enable] <app> to control zero downtime functionality
=====> Migration complete
=====>
Adding user dokku to group adm

@lastmjs You may have some other issue in your setup. I suggest you try the install after running dokku trace on.

I don't see it echoed either.
> $ dokku version
> 0.7.1

Same here. No echo, but do see a key pair in $DOKKU_ROOT/.deployment-keys/shared/.ssh
0.10.5


RR cannot find app in package

Hey, I am trying to process this app https://www.meistertask.com/files/MeisterTask_osx.pkg and I am getting this error. Is this a RR issue or the creator of the app?
Thanks

Processing https://www.meistertask.com/files/MeisterTask_osx.pkg ...
Input path looks like a download URL.
Download URL is: https://www.meistertask.com/files/MeisterTask_osx.pkg
Downloading file for further inspection...
9.99%
19.97%
29.96%
39.95%
49.93%
59.92%
69.91%
79.89%
89.88%
99.87%
Downloaded to /Users/user456/Library/Caches/Recipe Robot/2017-06-15_14-39-43_614520/MeisterTask_osx.pkg
Determining download format...
File extension is pkg
Opening downloaded file...
Download format is pkg
Checking whether package is signed...
Package is signed
Getting developer from pkg signature...
Developer is: MeisterLabs
Getting package signature authority names...
3 authority names recorded
Expanding package to look for clues...
Package expanded to: /Users/user456/Library/Caches/Recipe Robot/2017-06-15_14-39-43_614520/expanded
Getting information from PackageInfo file...
Bundle identifier: com.meisterlabs.meistertask.desktop
Install location: /Applications
Install filename: Applications
Extracting the package payload to see if we can find an app...
Did not find an app in the package payload
[ERROR] I wasn't able to gather enough information about this app to make recipes. If you saw any warnings above, they may contain more specific information.
[ERROR]

I'm experiencing the same thing when trying to create a recipe for Google Drive File Stream. There definitely is an app in the package payload.

                  -----------------------------------
                 |  Welcome to Recipe Robot v1.0.5.  |
                  -----------------------------------
                            \   _[]_
                             \  [oo]
                               d-||-b
                                 ||
                               _/  \_

Processing /Users/dan/Downloads/GoogleDriveFileStream.dmg ...
Input path looks like a disk image.
Download URL found in file metadata: https://dl.google.com/drive-file-stream/GoogleDriveFileStream.dmg
Successfully mounted disk image
Checking whether package is signed...
Package is signed
Getting developer from pkg signature...
Developer is: Google, Inc.
Getting package signature authority names...
3 authority names recorded
Expanding package to look for clues...
Package expanded to: /Users/dan/Library/Caches/Recipe Robot/2017-09-30_20-52-16_665243/expanded
Getting information from PackageInfo file...
Bundle identifier: com.google.pkg.Keystone
Install location: /
Install filename:
Extracting the package payload to see if we can find an app...
Did not find an app in the package payload
Getting information from PackageInfo file...
Install location: /Applications
Install filename: Applications
Extracting the package payload to see if we can find an app...
Did not find an app in the package payload
[ERROR] I wasn't able to gather enough information about this app to make recipes. If you saw any warnings above, they may contain more specific information.
[ERROR]
[]
[xx]
q-||-p
||
_/  _

@danlockcuff @macprince - You've discovered what I already suspected: that Recipe Robot's support for pkg files is experimental at best. This is something I've been meaning to dive deeper into. See #27.
I'm going to add your two examples into #27 for future research purposes. Thank you!


Consider having BaseIndexer.get_window_bounds be a generator

This would greatly improve memory as we don't really need to maintain the window bounds before or after the aggregation step.

A numba bug that might be a blocker for this issue https://github.com/numba/numba/issues/4735


Handle changes to the scene after initial serialization

Reproducible on many model-viewer demos since everything is loaded magically, need to determine when to reserialize and flush new data. Right now, content can be stale.
The early abort in __requestEntity in content is a part of the culprit at least.
We don't want to be over eager and push any changes, but it's easy to be in a scenario viewing a scene and something is added to it after the initial load. Adding a manual refresh would be great, but that seems like a bit much for some cases where it'll be the default. Maybe something like, for new scenes, we poll for changes for the first n seconds? Changing the current scene for example will refresh.

Refresh buttons added in #22 and #26


Add more versions to VS build tools

This switches the default build tools from VS 2019 to VS 2022 and also adds support to allow switching to VS 2017 and VS 2015 build tools.

I am going to add the configuration feature to pwr and test the MSVC configurations in this PR before merging.

I am going to add the configuration feature to pwr and test the MSVC configurations in this PR before merging.

Here are the defined configurations:
msvc143-x86 msvc143-amd64 msvc143-arm msvc143-arm64
msvc142-x86 msvc142-amd64 msvc142-arm msvc142-arm64
msvc141-x86 msvc141-amd64 msvc141-arm msvc141-arm64
msvc140-x86 msvc140-amd64 msvc140-arm
default = msvc143-x86
To be specified like:
vs-buildtools:17.2.3:msvc140-arm
vs-buildtools = vs-buildtools::default = vs-buildtools:latest:default
vs-buildtools::msvc142-amd64 = vs-buildtools:latest:msvc142-amd64


Does not build bitcode with SDK 9.1

Your script 'build-libssl.sh' does not include --fembed-bitcode flag when SDK version is 9.1 .

Thanks for your bug report. It's now fixed on master.


@change event is triggered when the component loads

Hi @adamberecz. Thanks for you amazing work here!
I've added the toggle in my design which has tabs to change the views. When the view that has the toggle loads, it triggers the change event. I'm not sure if it is supposed to do this, or only trigger when it's changed and not rendered for the first time. I've attached some screenshots to explain better.
Image for First tab with nothing in the console

Image of setting tab with the change event triggered without clicking the toggle.

Is there anything that needs to be done or does it work this way?

Resolved in 2.0.0.


Variables braking in Blockly

When using the variable Block, the Variable name in the Source Code is initialized as what I set, but when using it in a if statement or similar It becomes changed. Example the integer test becomes r_N_4ozC7mV_JG_5BM_25_5Euu .

@Crazyroostereye1 thanks for reporting! Should be fixed via #193

change x by Number still has the Issue


Update README.md

Updating the README supported platform section according to #47.

Merging...

Thanks @RiccardoGrieco !


Question on TagUI version used by Python rpa package

Posting a user query here, but will get to this as soon as I can

Hi There
I'm using Tagui Python open source.
Thanks to you, I had a lot of fun.
I'm sending you an email because I have some questions.
I didn't think it was an issue to post on the Github issue.
Why is the TagUI downloaded from RPA-Python 1.45 version 5.27 version?
Has your Tump Repository not been updated?
Or I'm curious if it's because there's a problem.
The live mode does not exist in version 5.27 and normal operation could not be confirmed in RPA-Python 1.45 .
When the version was changed to 6.95, there was a slight problem with live, but it could operate normally through some modifications.
There's no problem using the repository through a separate fork.
It's a pity that I can't use it in a pure library.
Thank you always.

Thank you, I'm happy to hear that you enjoy using the package!
Oh the short answer is this package uses a forked version of TagUI optimised for this Python package. It will automatically download from the Tump repository and the required delta files. A possible situation where there can be problem is you might have manually installed TagUI into the same directory as the one used by this package.
~/.tagui folder for Mac and Linux, %APPDATA%\tagui folder for Windows

If you are also using TagUI human language version, make sure to install elsewhere, otherwise it would affect this package operation, as it is designed to work with the forked version of TagUI, not the latest version from TagUI website.


Some examples?

Perhaps some examples would be good idea to add? Like best practise to integrate with a SSR Redux app.

+1

My store
import Cookies from 'universal-cookie'

function configureStore ({}, { serverCookies }) {
  const cookies = serverCookies || new Cookies()
  const middleware = [thunkMiddleware.withExtraArgument(cookies), promiseMiddleware]

  const store = createStore(
    rootReducer,
    initialState,
    composeWithDevTools(
      applyMiddleware(...middleware)
    )
  )
  return store
}

export default configureStore

My expres server
import cookiesMiddleware from 'universal-cookie-express'
app.use(cookiesMiddleware())
...
const store = configureStore({}, { serverCookies: req.universalCookies })

My client.js
const store = configureStore(initialState, {})

My actions
export const loginRequest = (data) => (dispatch, getState, cookies) => {
  return dispatch(loginUser(data))
  .then((response) => {
    const token = response.value
    cookies.set('token', token, { path: '/' })
  })
}

I think it's great people are sharing how they make it work with redux, but I don't think redux specific things belong on this repository. Most of the stuff can apply to any framework.


Add a check on response emptiness

Hi Jan,
I'm working on OData actions and found out that sometimes the response can be an empty string. This raises a SyntaxError on JSON.parse(''), so I added a check wether the response is an empty string or not.
I also added some tests, but unfortunately I don't have a public service for others to test so I had to skip them. If you find any before me please update url and data variables accordingly.
Antony

Hi,
Thanks for the fix. Does the TripPinService does not return an empty response?
Regards
Jan

Hello Jan,
I'm sorry, I got this wrong: a standard empty response returns a 204 HTTP code, thus o.js does a good job not parsing any response. The service which I'm working on instead has some non-standard features, so for example it gives me a 200 code and o.js breaks trying to parse the empty string returned.
Maybe we could decide wether to be resilient to some errors, or to throw them explicitely, or simply ignore them. What do you think?
Antony

Hi Antony,
because there are many non standard odata implementation out there, I prefer that o.js works with every kind of request that is acceptable. I do not see any need to implement a custom error when the server returns a 200 but empty request. Maybe we can add a console warning that this request is not standard conform.
Regards
Jan


update rust runtime to PROVIDED_AL2023

Update rust runtime to latest stable amazon runtime.

Thanks @henrycrib! Will be in the next release.


Inner join incorrectly pushdown predicate with OR operation

Describe the bug
Currently the join result might be incorrect when the predicate contains OR operation, since the filter will be pushed down.
To Reproduce
fn main() {
    let ctx = SessionContext::new();

    let id64_array = Int64Array::from(vec![Some(1), Some(2), Some(0), Some(3), Some(4)]);
    let str_array = StringArray::from(vec!["1", "2", "3", "4", "5"]);
    let schema = Schema::new(vec![
        Field::new("test_int", DataType::Int64, true),
        Field::new("str", DataType::Utf8, false),
    ]);

    let batch = RecordBatch::try_new(
        Arc::new(schema),
        vec![Arc::new(id64_array), Arc::new(str_array)],
    )
    .unwrap();

    let db1 = MemTable::try_new(batch.schema(), vec![vec![batch]]).unwrap();
    ctx.register_table("t1", Arc::new(db1)).unwrap();

    let sql = "select * from t1 inner join t1 tmp on t1.test_int = tmp.test_int and t1.str = '3' OR tmp.str = '1000'";

    let rt = Arc::new(tokio::runtime::Runtime::new().expect("Failed to create runtime"));
    let df = rt.block_on(ctx.sql(sql)).unwrap();
    rt.block_on(df.limit(5).unwrap().explain(false, false).unwrap().show())
        .unwrap();
    rt.block_on(df.limit(5).unwrap().show()).unwrap();
    let num_rows = rt
        .block_on(df.collect())
        .unwrap()
        .into_iter()
        .map(|rb| rb.num_rows())
        .sum::<usize>();
    println!("Final # rows: {}", num_rows);
}

Result is
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| plan_type     | plan                                                                                |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------+
| logical_plan  | Limit: 5                                                                                |
|               |   Projection: #t1.test_int, #t1.str, #tmp.test_int, #tmp.str                                                                                |
|               |     Inner Join: #t1.test_int = #tmp.test_int                                                                                |
|               |       Filter: #t1.str = Utf8("3")                                                                                |
|               |         TableScan: t1 projection=Some([0, 1])                                                                                |
|               |       Filter: #tmp.str = Utf8("1000")                                                                                |
|               |         SubqueryAlias: tmp                                                                                |
|               |           TableScan: t1 projection=Some([0, 1])                                                                                |
| physical_plan | GlobalLimitExec: limit=5                                                                                |
|               |   CoalescePartitionsExec                                                                                |
|               |     LocalLimitExec: limit=5                                                                                |
|               |       ProjectionExec: expr=[test_int@0 as test_int, str@1 as str, test_int@2 as test_int, str@3 as str]                                        |
|               |         CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |           HashJoinExec: mode=Partitioned, join_type=Inner, on=[(Column { name: "test_int", index: 0 }, Column { name: "test_int", index: 0 })] |
|               |             CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |               RepartitionExec: partitioning=Hash([Column { name: "test_int", index: 0 }], 8)                                                   |
|               |                 CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |                   FilterExec: str@1 = 3                                                                                |
|               |                     RepartitionExec: partitioning=RoundRobinBatch(8)                                                                           |
|               |                       MemoryExec: partitions=1, partition_sizes=[1]                                                                            |
|               |             CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |               RepartitionExec: partitioning=Hash([Column { name: "test_int", index: 0 }], 8)                                                   |
|               |                 CoalesceBatchesExec: target_batch_size=4096                                                                                |
|               |                   FilterExec: str@1 = 1000                                                                                |
|               |                     RepartitionExec: partitioning=RoundRobinBatch(8)                                                                           |
|               |                       MemoryExec: partitions=1, partition_sizes=[1]                                                                            |
|               |                                                                                |
+---------------+------------------------------------------------------------------------------------------------------------------------------------------------+
++
++
Final # rows: 0

Expected behavior
The result should look like
+---------------+-------------------------------------------------------------------------------------------------------+
| plan_type     | plan                                                                                |
+---------------+-------------------------------------------------------------------------------------------------------+
| logical_plan  | Limit: 5                                                                                |
|               |   Projection: #t1.test_int, #t1.str, #tmp.test_int, #tmp.str                                          |
|               |     Filter: #t1.test_int = #tmp.test_int AND #t1.str = Utf8("3") OR #tmp.str = Utf8("1000")           |
|               |       CrossJoin:                                                                                |
|               |         TableScan: t1 projection=Some([0, 1])                                                         |
|               |         SubqueryAlias: tmp                                                                            |
|               |           TableScan: t1 projection=Some([0, 1])                                                       |
| physical_plan | GlobalLimitExec: limit=5                                                                              |
|               |   CoalescePartitionsExec                                                                              |
|               |     ProjectionExec: expr=[test_int@0 as test_int, str@1 as str, test_int@2 as test_int, str@3 as str] |
|               |       CoalesceBatchesExec: target_batch_size=4096                                                     |
|               |         FilterExec: test_int@0 = test_int@2 AND str@1 = 3 OR str@3 = 1000                             |
|               |           CrossJoinExec                                                                               |
|               |             RepartitionExec: partitioning=RoundRobinBatch(8)                                          |
|               |               MemoryExec: partitions=1, partition_sizes=[1]                                           |
|               |             RepartitionExec: partitioning=RoundRobinBatch(8)                                          |
|               |               MemoryExec: partitions=1, partition_sizes=[1]                                           |
|               |                                                                                |
+---------------+-------------------------------------------------------------------------------------------------------+
+----------+-----+----------+-----+
| test_int | str | test_int | str |
+----------+-----+----------+-----+
| 0        | 3   | 0        | 3   |
+----------+-----+----------+-----+
Final # rows: 1

Where the predicate Filter: #t1.str = Utf8("3") should not be pushed down due to the OR.
I created a similar table in postgres and apply a similar query, here is the correct result:

Additional context
These two queries should output the same result:
q1: select * from t1 cross join t1 tmp where t1.test_int = tmp.test_int and t1.str = '3' OR tmp.str = '1000'
q2: select * from t1 inner join t1 tmp on t1.test_int = tmp.test_int and t1.str = '3' OR tmp.str = '1000'

😅 optimizer of datafusion is strange.....We should put the convert outer join to inner/right/left join in the rule.
We can infer is not null in the on clause or where clause and is not null can make outer join convert.
Current:

convert join with on clause is in parse_join() in plan_from_tables()`
convert join with where clause is in plan_selection()

This bug is because parse_join() use the cols from extract_join_keys directly. It's wrong.
I have explained them carefully in https://github.com/apache/incubator-doris/pull/8910#issuecomment-1096159553
Easy way is just consider AND.
Hope those information is helpful to person who want to fix this.


here are fix and test for issue #343

Now passed 'offset' value is used instead of 0.75 default value.

Thanks @KonstantinTr. Sorry for the delay in getting to this. Can you add a note and your name to the 0.4.6 whatsnew file?

I'll go ahead and merge this and then add the note myself. closes #343


ref #195: check access rights before cache

Q
A

Branch
6.2.x

Bug fix?
yes

New feature?
no

BC breaks?
no

Deprecations?
no

Tests pass?
yes

Fixed issues
chameleon-system/chameleon-system#195

License
MIT

Before cashing the category response, we now check for access rights every time. This way the access right is not being cached independently of the user.
The impact on performance by this additional check is reasonable. We tested this using blackfire as a profiler on a page with 789 categories.

@bestform you wrote "The impact on performance by this additional check is reasonable. We tested this using blackfire as a profiler on a page with 789 categories."
We have customers with thousands of categories. please define "reasonable".
I would much prefer a solution that handles the problem but can still be cached. Perhaps a service that would permit changing the access rules on a project basis while still allowing a sensible cache strategy.

@rnuernberg since the access rights depend on the exact combination of groups each user has, this could end up in a single cache entry for every user. This would solve the performance impact after the first visit of a user, but would in return impact the cache invalidation process tremendously.
We know that this solution is a tradeoff, as would be every other possible solution.
It would be great if you could profile this using a project with said thousands of categories if you have one running on 6.2 at the moment. The solution with ca. 800 categories takes about 4ms for the check. This is only on category pages, on other pages it has no impact. Seeing that this is a security relevant issue, it is only present on category pages and the alternative solutions would have a bigger impact on other ends, we decided to call this patch "reasonable".

@rnuernberg since the access rights depend on the exact combination of groups each user has, this could end up in a single cache entry for every user. This would solve the performance impact after the first visit of a user, but would in return impact the cache invalidation process tremendously.
We know that this solution is a tradeoff, as would be every other possible solution.
It would be great if you could profile this using a project with said thousands of categories if you have one running on 6.2 at the moment. The solution with ca. 800 categories takes about 4ms for the check. This is only on category pages, on other pages it has no impact. Seeing that this is a security relevant issue, it is only present on category pages and the alternative solutions would have a bigger impact on other ends, we decided to call this patch "reasonable".

@bestform there is no need to blindly cache the user groups. We can generate a smart cache that answers the question: has any one of the following groups access to the page. So I don't think we necessarily have to have a cache key for every user group combination.
The other thing is: If I understand this correctly, then you are accessing the database on every request. This will be fast wenn the database is on the same server as the process requesting the info - but may incur a different penalty when it is not.
I would therefor suggest revisting the problem to see if we can not solve this without losing the benefit of caching.

@rnuernberg keep in mind that this change will use the function that should have been used in the first place at this point and that is already used on every other page by the current code. The bug essentially was that it was circumvented in this special case. So I do see your point, but a smart cache would probably be a case for different issue.

@bestform but do the other places not avoid calling this again and again due to caching?

@rnuernberg no. The frontend controller checks this on every call to \ChameleonSystem\CoreBundle\Controller\ChameleonFrontendController::getResponse

@bestform I'm sorry, but I don't follow. When I check the place you suggested I end up at \TDataExtranetUser::AllowPageAccess which caches the result at least for every user.
However, I don't see how that code has anything todo with the change you introduced. Before, we avoided fetching the category from a given path and we avoided checking display permission. Both of these are now done on every single category call for every single user.
Sure, this does solve the access problem - but it also introduces sql queries on cached pages that I would very much like to avoid.
(please also not, that \TShopCategoryList::GetCategoryForCategoryPath already checks if the category may be displayed - so at the very least, the current code is redundant).

@rnuernberg

(please also note, that \TShopCategoryList::GetCategoryForCategoryPath already checks if the category may be displayed - so at the very least, the current code is redundant).

This is an unfortunate design flaw, as the contract of the method clearly does not state this, neither in the name, nor in the documentation. So I wouldn't want to rely on this side effect.

When I check the place you suggested I end up at \TDataExtranetUser::AllowPageAccess which caches the result at least for every user.

\TDataExtranetUser::AllowPageAccess only has a runtime cache as far as I can see.

However, I don't see how that code has anything todo with the change you introduced. Before, we avoided fetching the category from a given path and we avoided checking display permission. Both of these are now done on every single category call for every single user.

Correct, because this check was missing before. I see why we would want to cache this in some intelligent way. But I don't see a way without overloading the cache with cache keys. Do you have a concrete proposal on how we would be able to do this?
Please remember, that the dependence on groups is just an arbitrary implementation detail of the current default rights management. So we cannot cache the result of  \TDataExtranetUser::AllowPageAccess by some clever group cache. A concrete project may use other means of restricting access to a page.
Please also note that we didn't just add the check and called it a day. We optimized the performance of the code that is called in addition so that it has as less impact as possible.
I will see if I can find another way of using a cache inside there, but in the meantime, feel free to propose a solution we can discuss. I'd happily improve the performance of this further.

@bestform I would suggest reworking the access check in such a way, that this is no longer done by overwriting the AllowAccess method, but instead either use an event or a service that allows you to add checks by tagging an access check service.
The Core Check itself can then use a sensible caching decorator - and allow for custom additional checks with optional caching in customer projects.
If this approach is to dramatic for a patch release (we should then probably deprecated the AllowAccess method) we could move it to 6.3.0. Unless there is an urgent need for a fix in this patch release - in that case we could add an additional issue to clean up the logic in 6.3 and use your patch in the meantime.

@UlrichKu please see my changes and comments above. Before merging also note the discussion with @rnuernberg. If you have further input, please feel free to comment.

@bestform then please open an issue in 6.3.0

One commit seems to have a wrong issue number (159).

One commit seems to have a wrong issue number (159).

Fixed


Problem restoring Hades Q3 lockfile

I get the following error when running renv restore.

The hades Q3 release requires Matrix 1.5-3
https://github.com/OHDSI/Hades/blob/69f0db8a49d3c90ce297059de6cb0e9381130ff3/hadesWideReleases/2023Q3/renv.lock#L426
and requires MatrixModels 0.5-2
https://github.com/OHDSI/Hades/blob/69f0db8a49d3c90ce297059de6cb0e9381130ff3/hadesWideReleases/2023Q3/renv.lock#L1128
But MatrixModels 0.5-2 requires Matrix 1.6 or later
Here is description file which I downloaded from here:

So there is an inconsistency in this lockfile, right?
@anthonysena, @konstjar

I modified the lockfile manually to require Matrix 1.6-0 and renv::restore worked. 👍

Thanks @ablack3 !
That is really weird. I of course based the lock file on an existing library, and tested rebuilding the lock file and did not see that error. I went back to the machine I used at the time, and the MatrixModels DESCRIPTION does list the same requirement for Matrix. I'm not sure what changed since then. The only thing I can come up with is that the parsing of package version numbers was updated (and Matrix uses a weird version numbering).
I'll make the change in the Q3 lock file itself. It should not affect any analytics, and just helps build the library. For bigger changes I think we'll introduce patch releases


@schematics/angular ast-utils references embedded typescript which leads to version conflicts

🐞 @schematics/angular ast-utils references embedded typescript which leads to version conflicts
I hope this is the right repository. When searching for @schematics/angular, this was referenced by npm. If not, please direct me to the appropriate location for bug reports.
Is this a regression?

 I'm not sure if this is a regression or if I just got lucky in a previous version where my local typescript dependency and the referenced embedded typescript version was the same.
Description
 Given the following code:
import * as ts from 'typescript';
import { strings } from '@angular-devkit/core';
import { buildRelativePath} from '@schematics/angular/utility/find-module';
import { addImportToModule } from '@schematics/angular/utility/ast-utils';

export function updateModule(options: Schema): Rule {
  return (host: Tree, context: SchematicContext) => {
    const modulePath = options.module;
    const sourceText = host.read(modulePath).toString('utf-8');
    const source = ts.createSourceFile(modulePath, sourceText, ts.ScriptTarget.Latest, true);

    const widgetPath =
      `/${options.path}/` + (strings.dasherize(options.name) + '/') + strings.dasherize(options.name) + '.module';
    const relativePath = buildRelativePath(modulePath, widgetPath);
    const classifiedName = strings.classify(`${options.name}Module`);

    // --> This is where the error happens. The `source` object is incompatible with what `addImportToModule` expects
    const declarationChanges = addImportToModule(source, modulePath, classifiedName, relativePath);

    const declarationRecorder = host.beginUpdate(modulePath);
    for (const change of declarationChanges) {
      if (change instanceof InsertChange) {
        declarationRecorder.insertLeft(change.pos, change.toAdd);
      }
    }
    host.commitUpdate(declarationRecorder);
    return host;
  };
}

🔥 Exception or Error
tools/generators/widget/index.ts:44:50 - error TS2345: Argument of type 'import("~/node_modules/typescript/lib/typescript").SourceFile' is not assignable to parameter of type 'import("~/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript").SourceFile'.
  Types of property 'kind' are incompatible.
    Type 'import("~/node_modules/typescript/lib/typescript").SyntaxKind.SourceFile' is not assignable to type 'import("~/node_modules/@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript").SyntaxKind.SourceFile'.

44     const declarationChanges = addImportToModule(source, modulePath, classifiedName, relativePath);
                                                    ~~~~~~

Found 1 error.

Possible workaround:
Following the addImportToModule function, I find @schematics/angular/utility/ast-utils.d.ts having the following import:
import * as ts from '../third_party/github.com/Microsoft/TypeScript/lib/typescript';

instead of what I was expecting (and what is used elsewhere in the schematics framework):
import * as ts from 'typescript';

I got my custom schematics working by importing the two versions of typescript side-by-side:
import * as schema_ts from<EMAIL_ADDRESS>import * as ts from 'typescript';

...
    const source = schema_ts.createSourceFile(modulePath, sourceText, schema_ts.ScriptTarget.Latest, true);
...
    const declarationChanges = addImportToModule(source, modulePath, classifiedName, relativePath);

But this is kind of messy...
🌍 Your Environment
Angular CLI: 11.1.1
Node: 12.16.1
OS: win32 x64

Angular: 11.1.0
... animations, cdk, cdk-experimental, common, compiler
... compiler-cli, core, forms, google-maps, language-service
... material, platform-browser, platform-browser-dynamic, router
... service-worker
Ivy Workspace:

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1100.6
@angular-devkit/build-angular   0.1101.1
@angular-devkit/core            11.0.6
@angular-devkit/schematics      11.0.6
@angular/cli                    11.1.1
@schematics/angular             11.0.6
@schematics/update              0.1101.1
rxjs                            6.6.3
typescript                      4.1.3

Anything else relevant?

Hi @OysteinAmundsen,
Thanks for opening this request. However, the root cause of the problem is that you are using private APIs which are not intended to be used by 3rd parties.
Anything which requires a deep import, ie: anything which cannot be imported from @schematics/angular is to be considered as private API.

Hi @OysteinAmundsen,
Thanks for opening this request. However, the root cause of the problem is that you are using private APIs which are not intended to be used by 3rd parties.
Anything which requires a deep import, ie: anything which cannot be imported from @schematics/angular is to be considered as private API.

Hmm.. 🤔I really need these functions from @schematics/angular/utility:

addImportToModule
buildRelativePath
findModuleFromOptions
getWorkspace
parseName

Is anything with similar functionality exposed in any included public api? Is there like a common library I can use which can give me this functionality or is this perhaps something which is planned to be released in the future? I would rather reuse something existing than implement this functionality from scratch.
The usefulness of the schematics generator is really limited if the use-case is just to script executions of existing schematics, and navigating source code is hard and already implemented here...

Hmm.. 🤔I really need these functions from @schematics/angular/utility:

addImportToModule
buildRelativePath
findModuleFromOptions
getWorkspace
parseName

Is anything with similar functionality exposed in any included public api? Is there like a common library I can use which can give me this functionality or is this perhaps something which is planned to be released in the future? I would rather reuse something existing than implement this functionality from scratch.
The usefulness of the schematics generator is really limited if the use-case is just to script executions of existing schematics, and navigating source code is hard and already implemented here...

There is a plan to have a public API which include helpful utils but there is no ETA for this https://github.com/angular/angular-cli/issues/15335
At the point, the best option would be to copy the function that you need in your project. As those options are private and can be changed or removed in any version.

There is a plan to have a public API which include helpful utils but there is no ETA for this https://github.com/angular/angular-cli/issues/15335
At the point, the best option would be to copy the function that you need in your project. As those options are private and can be changed or removed in any version.

Thank you for your help. :-)

Thank you for your help. :-)


Auto-unicode for SikuliX-related calls like keyboard and type steps? - to explore

Hello team ;  I am using the R.keyboard ("Canción") command, the word contains accent.  as this is in English the function breaks, what do I do in that case?

Can try
r.clipboard(‘Canción’)
r.keyboard(‘[ctrl]v’)

Can try using unicode/utf8
R.keyboard ("Canci\xF3n")

you could convert to unicode by default before passing to sikulix right? Would be helpful in the future I imagine
or by option

This is a good idea. do you or anyone knows how to do that - to selectively convert characters to unicode, while leaving the rest unchanged?
otherwise if convert the whole string, what will happen is the behaviour for the tool will change for majority of users. and that could somehow break their existing automation.
option is another way, but best is the handling is done automatically, so user has 1 less option to be concerned about

Closing for now until further demand to look into this, in order to focus on other active roadmap items


Add Spanish translation for this addon #25

@davisagli @sneridagh Can you checkout this "pull request", if all ok can you merge it?

@macagua thanks!


feature request: flag duplicated class properties

I don't think there is a rule flagging this common mistake?
class ThisOne:
    def __init__(self):
      self.hello="hi"
      self.hello="bye"   # <-- flag repeated property

@AlexWaygood how common is it to reassign self variables in the constructor? Like, is this something that's frowned upon
class Test:
	def __init__(self, arg):
		self.name = "hi"
		if arg:
			self.name += " more"

Either way, I think Ruff needs a control flow sensitive analysis to avoid too many false positives, or it would flag:
class Test:
	def __init__(self, arg):
		if arg:
			self.message = "hy"
		else:
			self.message = "bye"

which should remain valid.

@AlexWaygood how common is it to reassign self variables in the constructor? Like, is this something that's frowned upon

It's pretty common. I wouldn't say that that's frowned upon. If we were to accept this, we'd need a way to distinguish between "pointless" assignments that are immediately overriden, like OP's example, and assignments like your example there which seem fine to me.

Also is it possible to specify:
class ThisOne:
    hello: int
   def __init__(self):
      self.hello="hi" # error, not an int

?


Foreign Keys will not be created

dlt version
dlt 0.3.22
Describe the problem
Following this tutorial, i expect the foreign keys to be created in the schema. However when i inspect the foreign keys, there are no foreign keys.
Each child table contains FOREIGN KEY column _dlt_parent_id linking to a particular row (_dlt_id) of a parent table.
https://dlthub.com/docs/general-usage/destination-tables#child-and-parent-tables
Expected behavior
Foreign keys should be present.
Steps to reproduce
Run this:
`data = [
{
'id': 1,
'name': 'Alice',
'pets': [
{'id': 1, 'name': 'Fluffy', 'type': 'cat'},
{'id': 2, 'name': 'Spot', 'type': 'dog'}
]
},
{
'id': 2,
'name': 'Bob',
'pets': [
{'id': 3, 'name': 'Fido', 'type': 'dog'}
]
}
]
pipeline = dlt.pipeline(
pipeline_name='quick_start',
destination='duckdb',
dataset_name='mydata'
)
load_info = pipeline.run(data, table_name="users")`
Operating system
macOS
Runtime environment
Local
Python version
3.8
dlt data source
Python data
dlt destination
DuckDB
Other deployment details
No response
Additional information
No response

@azngeek: It's unlikely that we will add foreign keys here. the order in which dlt loads data into the destination tables is not defined, in short, the loading is faster this way if there are no dependencies between the load jobs. For this reason, adding foreign keys would add constraints that would force us to load the data in a certain order. Is there any specific reason you need foreign keys? If you need fast lookups, indexes will suffices, joins will not be faster on a foreign key constraint over an index.


[REQUEST] Automatically pull environment files

Describe the solution you'd like
Now that the repos are separate it would be nice if there was a way to have the tools automatically pull the env files from the environments repo.
This would make it easier once we turn the tools into some kind of package.
We should do some brainstorming to come up with the best way to do this.

Remote Environment Files Design plan
Goals

A user can install the open-ce package and do builds without having to clone a git repo.
Open-CE env files can import envs using urls.

Plan

First I want to make it possible for env files to be URLs.

I should be able to do this for both the command line args and the imported envs at the same time.
I’ll need to handle the env files at the URL importing other envs in the same location, but that should be manageable.
For this to work well, the conda_build_config file will ne to be able to be passed in as a URL also.

Once that is done I would like to look into a means by which to build the standard envs (open-ce, tensorflow, pytorch) without having to specify a URL at all. My first thought is that this can be done by the following:

If the user passes in something like open-ce for the env file, then the tools automatically clone the environments repo and use the env file of the same name, along with the conda_build_config file.


Binary for 0.9.0

Is there going to be a binary built for 0.9.0?
https://github.com/alexei-led/pumba/releases/tag/0.9.0

Most likely during next week

Thanks!

I don't know when, but they have been added already.


fix minor wording issues

Enjoying the s4h13 course, got to this section and thought I'd just contribute in a minor way. Thanks.

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Change Request: define "progressive concept disclosure" for all languages

The Basics

Which design guideline is affected?

The "Approachable" design principle here

Which target languages are affected?

All

Describe the change:

Add a definition (or a link) for "progressive concept disclosure".
Reasoning
This is not a standard enough term to simply use it without explaining it. People reading the design guidelines will almost certainly need additional context here.

Great point - we'll add it to the taxonomy of definitions and link from the design principle
[ ] @adrianhall to add to definition glossary and add link

Completed and integrated into general guidelines.


Running electron-oxs-sign on MacBook Air (M2) prevent python from working thereafter

Issue
running electron-osx-sign <myApp.app> --identity="Apple Distribution: <identity>" seems to break python after running, resulting in a python reinstall every time.
Steps

Run python3 (Observed with python3.10)
Python starts as expected
Run electron-osx-sign <myApp.app> --identity="Apple Distribution: <identity>"
Exits successfully with Application signed: <myApp.app> and the app is signed.
Run Python3
Exits imedently with zsh: killed     python3 (or python3.10)
Reinstall Py3, rinse and repeat.

Other info
This also occurs when running via electron-forge by setting the osxSign value in forge.config.json
Mac Specs
Model Name:                      MacBook Air
Model Identifier:	            Mac14,2
Chip:	                            Apple M2
Total Number of Cores:	    8 (4 performance and 4 efficiency)
Memory:	                            16 GB
System Firmware Version:   7459.141.1
OS Loader Version:	            7459.141.1

Node
Version 16.19.0
osx-sign 1.0.4

Had to go through this again.
This is the error I get when I run Python3
dyld[14128]: Library not loaded: '/Library/Frameworks/Python.framework/Versions/3.10/Python'
  Referenced from: '/Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10'
  Reason: tried: '/Library/Frameworks/Python.framework/Versions/3.10/Python' (code signature in <XXXXXXXX-XXXX-XXXX-XXXX-137B6196A0BF> '/Library/Frameworks/Python.framework/Versions/3.10/Python' not valid for use in process: mapping process and mapped file (non-platform) have different Team IDs), '/System/Library/Frameworks/Python.framework/Versions/3.10/Python' (no such file)
zsh: abort      python3

In addition the file  /Library/Frameworks/Python.framework/Versions/3.10/bin/python3.10 was last modified when I signed my app and it contains my Team-Id, PList and other signing info.
Furthermore if i start python via /Library/Frameworks/Python.framework/Versions/3.10/Resources/Python.app/Contents/MacOS/Python its working just fine.

I ran into this a few days ago. The problem for me was that I had chokidar part of my dependencies when it should have been part of the dev dependencies.


Docker plugin unable to track any modern registries

Tracking for Docker Hub fails with 401 and Gitlab with 403.

I am closing this, it worked with the example. So it must be user error.


Remove useless variable

Fix #12

 Thank you for your submission, we really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@zkoppert Could you please review this PR?

@zkoppert Could you please review this PR?

Sure! In the meantime, can you sign the CLA here so that we can accept your contribution? Thanks!!


Gender by Country from Usability Study

[ ] Change decimals to percentages. Change "WIGI score" to "Female ratio of biographies"
[x] Fix bug: If recent changes has less then 10 items, display "top n" (n<10). e.g. Recent changes show only two (countries) say "Top 2" instead of ten (10).

Also, that the decimals are very low numbers as a result, the graph looks ridiculous and all values displayed are "0.0" even though the color varies.


[Triton-MLIR][Testing]Fix tests warning, with small code clean-up

1.Code clean-up to remove superfluous #includes.
2.Fix two python test warnings, in which one relates to "#" formats, the other relates to regular expression string usage.

@Superjomn  pls help review this PR. It is a small one for some testing warning fix and code clean-up.


🌱 Bump CAPI to v1.9.1

What this PR does / why we need it:
Bump CAPI to v1.9.1
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #

/cherry-pick release-1.9

/test metal3-centos-e2e-integration-test-main metal3-ubuntu-e2e-integration-test-main

/cherry-pick release-1.9

Note that we cannot test 1.9 branch with e2e yet, but it is close to main so we'll use these test results and override there.

/lgtm

/cherry-pick release-1.9

Note that we cannot test 1.9 branch with e2e yet, but it is close to main so we'll use these test results and override there.

We need this though: https://github.com/metal3-io/project-infra/pull/931


MDArray

[X] I agree to follow the project's code of conduct.
[x] I added an entry to CHANGES.md if knowledge of this change could be valuable to users.

I rebased and extended the following PR since it seems to be inactive:
https://github.com/georust/gdal/pull/233
I tried to solve my own suggestions. However, please take a look at everything.
Moreover, I ran the tests with
RUSTFLAGS="-Z sanitizer=leak" cargo +nightly-2022-04-12-x86_64-unknown-linux-gnu test --all-features -- raster::mdarray::tests
to check for memory leaks.
All new NetCDF files are taken from GDAL's repo at OSGeo.

bors r+

thanks @ChristianBeilschmidt for following up this PR :) I was about to work on it and was surprised to find it was already finished and merged!


Removed redundant namespace creation from manual demo script

Please describe the motivation for this PR and provide enough
information so that others can review it.
Please mark with X for applicable areas.

[ ] New Functionality
[X] Documentation
[ ] Install
[ ] Control Plane
[ ] CLI Tool
[ ] Certificate Management
[ ] Networking
[ ] Metrics
[ ] SMI Policy
[ ] Security
[ ] Tests / CI System
[X] Other

Please answer the following questions with yes/no.

Does this change contain code from or inspired by another project? If so, did you notify the maintainers and provide attribution?
No

Impact of this PR
Remove the namespace objects from the following files:

docs/example/manifests/bookbuyer.yaml
docs/example/manifests/bookstore-v1.yaml
docs/example/manifests/bookthief.yaml
docs/example/manifests/bookwarehouse.yaml

Issue this solves
When running through the manual demo script, it appears that namespaces are created twice.
In the current version of the demo script, namespaces are first created using:
for i in bookstore bookbuyer bookthief bookwarehouse; do kubectl create ns $i; done

And are afterwards created again with the following command:
kubectl create -f docs/example/manifests/apps/

As the namespaces are part of the files in that directory. (example for bookbuyer)
This results in a message that the resource already exists when doing the kubectl create.
Impact on automated demo
I believe there should be no impact on removing the namespaces from docs/example/manifests/apps/ because the automated demo script uses inline YAML to create the applications. For example deploy-bookwarehouse.sh

The manifest files are needed for the automated demo, so even though they reference creating the same namespace it doesn't affect the deployment. Kubernetes will just ignore it the attempt to create a new existing namespace.

Maybe keeping the namespace resource in the manifests file isn't a bad idea, because it ensures the individual manifests files can be deployed independently without having to manually create the namespace. In the context of the instructions, its redundant, but the manifests alone being enough to deploy an app when the namespace hasn't been manually created seems beneficial to me to demo other scenarios.

@shashankram If the manifests were used to create the namespaces and deployments at the same time, when does the step to label the namespaces occur?

Yes @shashankram let's keep the manifest intact. I am creating a PR to update the manual demo and will take out the instructions for creating the namespaces, since this is handled by the bookstore app deploy.

@shashankram If the manifests were used to create the namespaces and deployments at the same time, when does the step to label the namespaces occur?

The namespace could be labeled later as well, but with the caveat that if the namespace is labeled post application and OSM deployment, then the application pods would need to be restarted for the sidecars to be injected. Its possible for the users to label namespace whenever they want, with the condition that the application pods should be deployed post namespace labeling for automatic sidecar injection. If this cannot be satisfied, a rolling restart on the application pod can be performed.

Maybe the best compromise is not to change this at all then? That way the manifests are still self-contained and we don't have to add a step to do a rolling restart of all the pods.

Maybe the best compromise is not to change this at all then? That way the manifests are still self-contained and we don't have to add a step to do a rolling restart of all the pods.

That would be my suggestion, to keep the manifests as is.

Maybe the best compromise is not to change this at all then? That way the manifests are still self-contained and we don't have to add a step to do a rolling restart of all the pods.

That would be my suggestion, to keep the manifests as is.

@NillsF are you fine with this?

I'm fine with keeping as is if that is best for the demo itself.
Just thinking out load, an option to avoid the "error" message when creating the resources, we could change the current kubectl create to a kubectl apply in the instruction markdown.
Thoughts?

I'm fine with keeping as is if that is best for the demo itself.
Just thinking out load, an option to avoid the "error" message when creating the resources, we could change the current kubectl create to a kubectl apply in the instruction markdown.
Thoughts?

That seems great. Would you mind sending a PR for this?

Will create one later today, and will close this one.


Possible to invalidate anti-CSRF tokens soon as they're used?

I'm working on getting a .NET web app of mine compliant with a security standard and I installed CSRFence to address a CSRF vulnerablity our penetration test vendor found.  The vendor said CSRFence has helped but there is still an issue. They're now saying:

"once a valid anti-CSRF token is generated for a particular account, it can also be used for any other account as well. The back-end should perform the following additional checks:

Back-end code should not allow an anti-CSRF token created for a particular account, to be used for another account. Otherwise an attacker can create a token for his own account and use it in a CSRF attack targeting another user. (Mandatory)
Ideally, the system should invalidate the anti-CSRF token as soon as it is posted to the server. Multiple uses should be disallowed. (Optional)"

Is there a built-in way to configure/use CSRFence to do what they're asking or should I build this functionality into my web app?

Ad 1), CSRFence does exactly that, only it does not tie the validity to user accounts (as it would not work for non-authenticated pages), but uses session cookie with randomly generated identifier instead. Therefore the attack scenario your vendor described is not possible. It is not possible to use token generated for one user to be used by another one, it would defeat the purpose of CSRF protection alltogether.
Ad 2), It would be possible, but it would require semi-persistent storage of used CSRF tokens, which would complicate things a lot, especially when used in a farm. As I am not aware of any attack vector this approach would block, I deem it out of scope.

Thank you, @ridercz. Your advice is very much appreciated.


Style/DocumentationMethod to allow us to configure exclusion for special methods

Is your feature request related to a problem? Please describe.
https://docs.rubocop.org/rubocop/1.60/cops_style.html#styledocumentationmethod
Style/DocumentationMethod cop doesn't allow us to exclude some method names such as included or inherited. Those are special methods that are called by Ruby runtime as hooks. Sometimes we write some boilerplate code in there and we don't have anything special to write about them.
Describe the solution you'd like
AllowedMethods option for Style/DocumentationMethod cop such as https://docs.rubocop.org/rubocop/1.60/cops_style.html#configurable-attributes-45
The default value might be something like initialize, inherited, included.
Describe alternatives you've considered
We might simply ignore those hook methods, but I believe some users do not want to ignore them.
Additional context
I cannot find any list of the special methods. If there is one it will be very helpful.

This cop is disabled by default, and I don't see a use case for enabling it while also introducing an AllowedMethods parameter. Instead of setting the new parameter, consistent handling can be through documentation such as # nodoc.

# nodoc works only for RDoc and doesn't for YARD.
If adding AllowedMethods is not possible, what about excluding these special methods by default?

Well, either way, it duplicates #11585. The discussion will likely proceed there.

@koic Oh I didn't notice the duplication. Thank you for pointing out!


Run renovate job for infra-operator

... so that we can maintain dependencies more easily.

@kajinamit seeing other operators examples[1], i think we will need renovate.json file first in infra-operator.
[1] https://github.com/openstack-k8s-operators/ovn-operator/blob/main/renovate.json

@kajinamit seeing other operators examples[1], i think we will need renovate.json file first in infra-operator.
[1] https://github.com/openstack-k8s-operators/ovn-operator/blob/main/renovate.json

Good catch. I've created https://github.com/openstack-k8s-operators/infra-operator/pull/53

/approve


Add large-v3

Attempt at updating to large-v3.
Got the large-v3 weights link from here
However when testing I kept getting the following error:

RuntimeError: Given groups=1, weight of size [1280, 128, 3], expected input[1, 80, 3000] to have 128 channels, but got 80 channels instead

I think might be the whisper version?