Updated the script to return the original position/rotation

induce_stress now allows for one-liner to start shaking, instead of 2 lines (shaker.target = someNode3D)
shake_once was deleted because it's obsolete.
The demo was updated for it as well.

Thank you for making a pull request, I will take a look, though I wont be able to push it today, so tomorrow I will do a thorough look.

@TheYellowArchitect Hello I have taken a look and I see some improvements that I already pushed to the main repo, please take a look, anyways you have changed some things I would not agree with.

Removing the shake_once (now renamed to shake_node) was implemented like this because currently godot 4.3 does not have a way to export a button so this is a work around for creating a button, now why this exists is because I want to have the ability for to see the shake in the editor, this avoids going back and forth into the game.

You have added some checks for example checking for null in the target, that makes sense to me so I have added that bit to the main repo, thank you!

You wanted to have the ability to shake multiple objects at once but currently it wont work because of the way it shakes one node(try to add another cube and use the same nodeshaker variable), I have a rough idea on fixing this so multiple objects can be shaken.

In the ready function we don't need to set the initial position and rotation as the setting of the target actually does this (this was from previous old code, now removed and fixed)

I think you have over-complicated the resting the initial position & rotation, I have implemented something simple, though I do understand why you have it this way, if you want to have multiple objects shake, this makes sense to me.

Thank you for writing a pr and hope I have changed somethings to your liking and about shaking multiple objects at once I think I can implement it, if you have some ideas please ask here!

You wanted to have the ability to shake multiple objects at once but currently it wont work because of the way it shakes one node(try to add another cube and use the same nodeshaker variable), I have a rough idea on fixing this so multiple objects can be shaken.

I didn't add shaking multiple objects at once. I only added the ability to reset the currently shaking node, if another node is added to shake.
This feature would be quite big imo, and would require basically an array of "shakers", each tracking the object they shake, the current trauma etc

In the ready function we don't need to set the initial position and rotation as the setting of the target actually does this (this was from previous old code, now removed and fixed)

I wasn't certain if a target being set from the editor gets into the setter, so I let it in to not break anything :sweat_smile:

I think you have over-complicated the resting the initial position & rotation, I have implemented something simple, though I do understand why you have it this way, if you want to have multiple objects shake, this makes sense to me.

This is my use-case scenario. Think any card game like slay the spire or whatever. I have 1 nodeshaker in the scene, and many cards in the player's hand. If a player clicks a disabled card, the card shakes (negative visual feedback)
So the nodeshaker starts without a target. If a player clicks a disabled card, it sets the new target. But if player re-clicks while shaking, it shouldn't do anything, hence the additional check. If a different card is clicked, it resets as seen.

Thank you for writing a pr

np, I did these changes to make it work for my project, so I had to share to help others. Freely edit this PR to your liking :)

and about shaking multiple objects at once I think I can implement it

I think it would complicate the code. The simplicity of this plugin is its greatest strength, just 70 lines in 1 script, for amazing functionality. The competitor "Shaker" has shit tons of scripts for advanced functionality which is bloat if you don't need that.
As a result, I would rather just copy-paste nodeshaker nodes, because this works good for a single target. Expanding it to multiple targets at once via arrays, is easy but would also make it bloated imo. I may do it in the future in this project I'm working on though. If I do, I will push a PR.

@TheYellowArchitect Thank you for replying, I am glad someone found a use for it and has given me valuable feedback, I think the plugin is in a better state now, I might make a branch that includes the ability to shake multiple objects at once, Im feeling up for the challenge, since I feel like the pr is done I am closing it, please feel free to open up an issue here if you have other ideas.

@TheYellowArchitect Hello, So I have pushed something to the multi_node_shaker branch (https://github.com/Dragon20C/Godot-NodeShaker3D/tree/Shake_Multiple_Nodes) its not final as I think you had a good way of structuring it so I will steal some of your ideas (yoink!) so feel free to test this branch and give me feedback on it, it should work and all the shakes for each node3d is different.

I apologize for not replying earlier, I just saw my email messages. I have been busy, but I will try to review it in the next few days (I hope the multi-node-shaker is a singleton, if not that's my first feedback :P )


Making overview page more appealing

This removes some technical details from the overview page (putting them in a separate article) and adds images. This should make the introduction experience more pleasant.

Docs Build status updates of commit 5fecf9e:
:clock10: Pending: waiting for processors (11 builds ahead of you)
:warning: Docs Build is busy, currently there are 11 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 5fecf9e:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/overview.gif
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md
:white_check_mark:Succeeded

docs/resources/differences-scripts-add-ins.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/overview.md

Line 14: [Warning] Invalid file link:(~/images/overview.gif).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit eaff676:
:clock10: Pending: waiting for processors (12 builds ahead of you)
:warning: Docs Build is busy, currently there are 12 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit eaff676:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/overview.gif
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md
:white_check_mark:Succeeded

docs/resources/differences-scripts-add-ins.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/overview.md

Line 14: [Warning] Invalid file link:(~/images/overview.gif).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 612cf93:
:clock10: Pending: waiting for processors (10 builds ahead of you)
:warning: Docs Build is busy, currently there are 10 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

@ElizabethSamuel-MSFT Here's the staging site link.

Docs Build status updates of commit e262a59:
:clock10: Pending: waiting for processors (11 builds ahead of you)
:warning: Docs Build is busy, currently there are 11 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit e262a59:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/overview.gif
:white_check_mark:Succeeded

docs/includes/preview-note.md
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md
:white_check_mark:Succeeded

docs/resources/differences-scripts-add-ins.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/overview.md

Line 0: [Warning] Invalid file link:(~/images/overview.gif).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

@ElizabethSamuel-MSFT Judging by the build status, it looks like gifs aren't built on staging branches. If it doesn't render after check-in, I'll fix it in a subsequent PR.

Docs Build status updates of commit e788d26:
:clock10: Pending: waiting for processors (18 builds ahead of you)
:warning: Docs Build is busy, currently there are 18 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 1036c99:
:clock10: Pending: waiting for processors (18 builds ahead of you)
:warning: Docs Build is busy, currently there are 18 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 7cbf45f:
:clock10: Pending: waiting for processors (18 builds ahead of you)
:warning: Docs Build is busy, currently there are 18 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 7cbf45f:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/code-editor-environment.md
:warning:Warning

Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/overview.gif
:white_check_mark:Succeeded

docs/includes/preview-note.md
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md

Line 23: [Warning] Invalid file link:(~/resources/differences-scripts-add-ins.md#apis).

docs/overview/overview.md

Line 0: [Warning] Invalid file link:(~/images/overview.gif).
Line 28: [Warning] Invalid file link:(~/tutorials/excel-office-scripts-tutorial.md).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit 13c6fd2:
:clock10: Pending: waiting for processors (18 builds ahead of you)
:warning: Docs Build is busy, currently there are 18 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit 13c6fd2:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/code-editor-environment.md
:warning:Warning

Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/chart-sample.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/load-sync.png
:white_check_mark:Succeeded

docs/images/overview.gif
:white_check_mark:Succeeded

docs/images/range-sample.png
:white_check_mark:Succeeded

docs/images/table-sample.PNG
:white_check_mark:Succeeded

docs/images/tutorial-1.png
:white_check_mark:Succeeded

docs/images/tutorial-2.png
:white_check_mark:Succeeded

docs/images/tutorial-3.png
:white_check_mark:Succeeded

docs/images/tutorial-4.png
:white_check_mark:Succeeded

docs/images/tutorial-5.png
:white_check_mark:Succeeded

docs/includes/preview-note.md
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md

Line 10: [Warning] Invalid link: 'Office JavaScript APIs'. The file overview/code-editor-environment.md doesn't contain a bookmark named 'office-javascript-api'.
Line 23: [Warning] Invalid file link:(~/resources/differences-scripts-add-ins.md#apis).

docs/overview/overview.md

Line 0: [Warning] Invalid file link:(~/images/overview.gif).
Line 28: [Warning] Invalid file link:(~/tutorials/excel-office-scripts-tutorial.md).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit e5be8e3:
:clock10: Pending: waiting for processors (17 builds ahead of you)
:warning: Docs Build is busy, currently there are 17 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit e5be8e3:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/chart-sample.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/load-sync.png
:white_check_mark:Succeeded

docs/images/overview.gif
:white_check_mark:Succeeded

docs/images/range-sample.png
:white_check_mark:Succeeded

docs/images/table-sample.PNG
:white_check_mark:Succeeded

docs/images/tutorial-1.png
:white_check_mark:Succeeded

docs/images/tutorial-2.png
:white_check_mark:Succeeded

docs/images/tutorial-3.png
:white_check_mark:Succeeded

docs/images/tutorial-4.png
:white_check_mark:Succeeded

docs/images/tutorial-5.png
:white_check_mark:Succeeded

docs/includes/preview-note.md
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/overview.md

Line 14: [Warning] Invalid file link:(~/images/overview.gif).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.

Docs Build status updates of commit c58d3c3:
:clock10: Pending: waiting for processors (15 builds ahead of you)
:warning: Docs Build is busy, currently there are 15 builds ahead of this one, for more information you can view the Build queue graph on the Docs Portal.

Docs Build status updates of commit c58d3c3:
:warning: Validation status: warnings

File
Status
Preview URL
Details

docs/overview/overview.md
:warning:Warning

Details

docs/images/action-recorder-intro.png
:white_check_mark:Succeeded

docs/images/chart-sample.png
:white_check_mark:Succeeded

docs/images/code-editor-intro.png
:white_check_mark:Succeeded

docs/images/load-sync.png
:white_check_mark:Succeeded

docs/images/range-sample.png
:white_check_mark:Succeeded

docs/images/table-sample.PNG
:white_check_mark:Succeeded

docs/images/teaser-animation.gif
:white_check_mark:Succeeded

docs/images/tutorial-1.png
:white_check_mark:Succeeded

docs/images/tutorial-2.png
:white_check_mark:Succeeded

docs/images/tutorial-3.png
:white_check_mark:Succeeded

docs/images/tutorial-4.png
:white_check_mark:Succeeded

docs/images/tutorial-5.png
:white_check_mark:Succeeded

docs/includes/preview-note.md
:white_check_mark:Succeeded

docs/overview/code-editor-environment.md
:white_check_mark:Succeeded

docs/resources/add-ins-differences.md
:white_check_mark:Succeeded

docs/toc.yml
:white_check_mark:Succeeded

docs/overview/overview.md

Line 14: [Warning] Invalid file link:(~/images/teaser-animation.gif).

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Update azure-cosmos README.md and azure-cosmos-benchmark README.md and azure-cosmos-examples README.md

Describe the bug
Update azure-cosmos README.md and azure-cosmos-benchmark README.md and azure-cosmos-examples README.md to follow the following pattern.
required_readme_sections:
  - "Azure .+ client library for Java"
  - ^Getting started$
  - ^Key concepts$
  - ^Examples$
  - ^Troubleshooting$
  - ^Next steps$
  - ^Contributing$

This is done.


Improve product selection widget

Improve the product selection widget that is used across the Dashboard 2.0 e.g.:

adding products to a draft order
adding products to collections or categories

Mockup:

To clarify:

when creating draft orders we add variants
in case of categories/collections, we add whole products (with all variants included) so the selector might be simpler in that case and include only one-level list items - only the products.


Feat: Donate School Form UI and responsive

Describe the feature
Improving UI to match website theme of the page.
Adding conformation pop-up on submission of form.
Making page responsive for all screen sizes.
Add ScreenShots

Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@anuragverma108  @huamanraj  Sir,
Please assign this issue to me under GSSoC'24. Thank You!

@RitiChandak , it is assigned yesterday to me by @huamanraj .
And I have already raised PR for other issue . So I waiting to merge that and then I will raise PR for this also.


Support automatic wrapping of MNT into WMNT, and then proceed to the WMNT approval process.

In the Mantle docs, you can find the contract address for WMNT.
https://docs.mantle.xyz/governance/parameters/tokenomics

and WETH auto unwrap to ETH

https://github.com/zkLinkProtocol/dapp-portal/pull/85


Redefinable HE_GFX_STACK_SIZE

Please allow to redefine HE_GFX_STACK_SIZE. Currently it's just defined. Could be great to define it only if it isn't defined yet. Like this:
#ifndef HE_GFX_STACK_SIZE
#define HE_GFX_STACK_SIZE 1024
#endif

I'll work on it soon, thanks for the feedback.

Added in the latest commit 👍

Thank you 😊


Storage: TypeError: request() takes at least 3 arguments (3 given)

Hi,
I'm having trouble while using google.cloud for Storage. I start by trying to list blobs in a bucket.
I'm trying to get threw the proxy of my organization. So I try to create my own http connection in order to specify the proxy, but even with a simple urllib3.PoolManager(), I keep getting the error and stacktrace bellow:
Error:
TypeError: request() takes at least 3 arguments (3 given)
Stacktrace:
Traceback (most recent call last)
<ipython-input-9-a7bd2d0fcc13> in <module>()
      3 authed_http = AuthorizedHttp(credentials, http)
      4 storage_client = storage.Client(_http=http)
----> 5 bucket = storage_client.get_bucket('mybucket')
      6 blobs = bucket.list_blobs()
      7

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/client.pyc in get_bucket(self, bucket_name)
    171         """
    172         bucket = Bucket(self, name=bucket_name)
--> 173         bucket.reload(client=self)
    174         return bucket
    175

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/_helpers.pyc in reload(self, client)
     97         api_response = client._connection.api_request(
     98             method='GET', path=self.path, query_params=query_params,
---> 99             _target_object=self)
    100         self._set_properties(api_response)
    101

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in api_request(self, method, path, query_params, data, content_type, headers, api_base_url, api_version, expect_json, _target_object)
    297         response, content = self._make_request(
    298             method=method, url=url, data=data, content_type=content_type,
--> 299             headers=headers, target_object=_target_object)
    300
    301         if not 200 <= response.status < 300:

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in _make_request(self, method, url, data, content_type, headers, target_object)
    191         headers['User-Agent'] = self.USER_AGENT
    192
--> 193         return self._do_request(method, url, headers, data, target_object)
    194
    195     def _do_request(self, method, url, headers, data,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in _do_request(self, method, url, headers, data, target_object)
    221         """
    222         return self.http.request(uri=url, method=method, headers=headers,
--> 223                                  body=data)
    224
    225     def api_request(self, method, path, query_params=None,

TypeError: request() takes at least 3 arguments (3 given)

My code is the following:
from google.oauth2 import service_account
from google.cloud import storage
import urllib3
from google.auth.transport.urllib3 import AuthorizedHttp

json="pathtojson"

credentials = service_account.Credentials.from_service_account_file(json)
http = urllib3.PoolManager()
#authed_http = AuthorizedHttp(credentials, http)
storage_client = storage.Client(_http=http)
bucket = storage_client.get_bucket('mybucket')
blobs = bucket.list_blobs()

for blob in blobs:
    print(blob.name)

Python is 2.7.11.
I'm using Jupyter (notebook server is 5.0.0).
pip freeze:

Click to expand

asn1crypto==0.22.0
backports-abc==0.5
backports.shutil-get-terminal-size==1.0.0
bleach==2.0.0
cachetools==2.0.0
certifi==2017.4.17
cffi==1.10.0
chardet==3.0.4
configparser==3.5.0
cx-Oracle==5.3
decorator==4.0.11
dill==<IP_ADDRESS>
entrypoints==0.2.3
enum34==1.1.6
functools32==3.2.3.post2
future==0.16.0
futures==3.1.1
gapic-google-cloud-datastore-v1==0.15.3
gapic-google-cloud-error-reporting-v1beta1==0.15.3
gapic-google-cloud-logging-v2==0.91.3
gapic-google-cloud-pubsub-v1==0.15.4
gapic-google-cloud-spanner-admin-database-v1==0.15.3
gapic-google-cloud-spanner-admin-instance-v1==0.15.3
gapic-google-cloud-spanner-v1==0.15.3
gapic-google-cloud-speech-v1==0.15.3
gapic-google-logging-v2==0.10.1
gapic-google-pubsub-v1==0.10.1
google-api-python-client==1.6.2
google-auth==1.0.1
google-auth-httplib2==0.0.2
google-cloud==0.26.1
google-cloud-bigquery==0.25.0
google-cloud-bigtable==0.25.0
google-cloud-core==0.25.0
google-cloud-datastore==1.1.0
google-cloud-dns==0.25.0
google-cloud-error-reporting==0.25.1
google-cloud-happybase==0.21.0
google-cloud-language==0.25.0
google-cloud-logging==1.1.0
google-cloud-monitoring==0.25.0
google-cloud-pubsub==0.26.0
google-cloud-resource-manager==0.25.0
google-cloud-runtimeconfig==0.25.0
google-cloud-spanner==0.25.0
google-cloud-speech==0.26.0
google-cloud-storage==1.2.0
google-cloud-translate==0.25.0
google-cloud-videointelligence==0.25.0
google-cloud-vision==0.25.0
google-gax==0.15.13
google-resumable-media==0.2.1
googleapis-common-protos==1.5.2
grpc-google-iam-v1==0.11.1
grpc-google-logging-v2==0.10.1
grpc-google-pubsub-v1==0.10.1
grpcio==1.4.0
html5lib==0.999999999
httplib2==0.10.3
idna==2.5
ipaddress==1.0.18
ipykernel==4.6.1
ipython==5.4.1
ipython-genutils==0.2.0
ipywidgets==6.0.0
Jinja2==2.9.6
jsonschema==2.6.0
jupyter==1.0.0
jupyter-client==5.1.0
jupyter-console==5.1.0
jupyter-core==4.3.0
MarkupSafe==1.0
mistune==0.7.4
nbconvert==5.2.1
nbformat==4.3.0
notebook==5.0.0
numpy==1.13.1
oauth2client==3.0.0
oauthclient==1.0.3
pandas==0.20.3
pandocfilters==1.4.1
pathlib2==2.3.0
pexpect==4.2.1
pickleshare==0.7.4
ply==3.8
prompt-toolkit==1.0.14
proto-google-cloud-datastore-v1==0.90.4
proto-google-cloud-error-reporting-v1beta1==0.15.3
proto-google-cloud-logging-v2==0.91.3
proto-google-cloud-pubsub-v1==0.15.4
proto-google-cloud-spanner-admin-database-v1==0.15.3
proto-google-cloud-spanner-admin-instance-v1==0.15.3
proto-google-cloud-spanner-v1==0.15.3
proto-google-cloud-speech-v1==0.15.3
protobuf==3.3.0
ptyprocess==0.5.2
pyasn1==0.2.3
pyasn1-modules==0.0.9
pycparser==2.18
Pygments==2.2.0
pysqlite==2.8.3
python-dateutil==2.6.1
pytz==2017.2
pyzmq==16.0.2
qtconsole==4.3.0
requests==2.18.1
rsa==3.4.2
scandir==1.5
simplegeneric==0.8.1
singledispatch==<IP_ADDRESS>
six==1.10.0
SQLAlchemy==1.1.11
terminado==0.6
testpath==0.3.1
tornado==4.5.1
traitlets==4.3.2
uritemplate==3.0.0
urllib3==1.21.1
wcwidth==0.1.7
webencodings==0.5.1
widgetsnbextension==2.0.0

Please feel free to reformat this issue if that could help.
Many thanks.

@kipi78 The issue is your transport:
http = urllib3.PoolManager()
#authed_http = AuthorizedHttp(credentials, http)
storage_client = storage.Client(_http=http)

Until #1998 is closed, you must use an httplib2.Http transport. From the docstring

Can be any object that defines request() with the same interface as httplib2.Http.request

Is there any reason you passed an explicit _http to the Client constructor? The leading underscore is a sign that _http isn't part of the public API.

Thank you for your response.
I wrote _http according to this doc:
http://google-cloud-python.readthedocs.io/en/latest/storage/client.html
Okay, I read that it was not an httplib2 object but an urllib3 object, but I tried with a httplib2.Http.
As I said I want to get threw my proxy. Here is my code with both "simple" http transport and one with proxy settings:
httpStorage = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP,proxyUrl, int(proxyPort), True,proxyUser,proxyPassword),ca_certs = pathCertificat) #httpStorage = httplib2.Http() authed_http = AuthorizedHttp(credentials, httpStorage) storage_client = storage.Client(credentials=credentials, _http=httpStorage)
How am I supposed to use that httplib2.Http transport if not passed with the explicit _http arg ?

It seems to me that you should be passing _http=authed_http.
I am pre-emptively closing this out, it seems you've figure out how to configure against your proxy?
While waiting on #3674 / #1998, you may also want to check out https://github.com/GoogleCloudPlatform/httplib2shim

Let me know if there are still concerns and we can re-open and discuss if need be.

No, my comments meant what I tried to simplify the case. I already tried with _http=authed_http which leads to the TypeError: request() takes at least 3 arguments (3 given) error. With the bellow code:
credentials = service_account.Credentials.from_service_account_file(json)
httpStorage = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP,proxyUrl, int(proxyPort), True,proxyUser,proxyPassword),ca_certs = pathCertificat)
authed_http = AuthorizedHttp(credentials, httpStorage)
storage_client = storage.Client(credentials=credentials, _http=authed_http)
bucket = storage_client.get_bucket('mybucket')

I will have a try with httplib2shim, thank you.

So, with httplib2shim, with the sample code from the doc which uses GoogleCredentials from oauth2client.client, the problem is that google-cloud-python Client only supports credentials from google-auth-library-python.
My code:
credentials = GoogleCredentials.get_application_default()
httpStorage = httplib2.Http(proxy_info = httplib2.ProxyInfo(httplib2.socks.PROXY_TYPE_HTTP,proxyUrl, int(proxyPort), True,proxyUser,proxyPassword),ca_certs = pathCertificat)
httpStorage = credentials.authorize(httpStorage)
storage_client = storage.Client(credentials=credentials, _http=httpStorage)
bucket = storage_client.get_bucket('mybucket')

As I need to use ca_certs, I tried to implement this:

Instead, pass a urllib3.Pool instance http = httplib2shim.Http(pool=my_pool)
with the bellow code:

credentials = service_account.Credentials.from_service_account_file(json)
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat)
http = httplib2shim.Http(pool=http)
authed_http = AuthorizedHttp(credentials, http)
storage_client = storage.Client(_http=authed_http, credentials=credentials)
bucket = storage_client.get_bucket('mybucket')

Which still leads to the same error, whether I try with a simple PoolManager or with a ProxyManager.

@jonparrott Can you weigh in here?

I'm not able to reproduce, here's the code I used:
>>> from google.cloud import storage
>>> import google.auth
>>> import google.auth.transport.urllib3
>>> import urllib3
>>> import httplib2shim
>>>
>>> pool = urllib3.PoolManager()
>>> credentials, project = google.auth.default()
>>> authed_pool = google.auth.transport.urllib3.AuthorizedHttp(credentials, http=pool)
>>> http = httplib2shim.Http(pool=authed_pool)
>>>
>>> client = storage.Client(project=project, _http=http)
>>> list(client.list_buckets())
[<Bucket: ...>, ...]
>>>

I would strongly encourage waiting until #1998 is closed as this will all be significantly easier then.

Okay, the thing is that you passed an AuthorizedHttp to httplib2shim.Http(), while I passed the ProxyManager and applied the AuthorizedHttp on httplib2shim.Http(). So, I don't have this error anymore with your code :)
The thing is now to use the ProxyManager, it looks like I don't manage to do it. I need to configure a proxy with user/password and a certificate. My code bellow leads to this error:

ProxyError: ('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))

proxyUrl="http://host:80"
scopes=["https://www.googleapis.com/auth/devstorage.read_write"]
credentials = service_account.Credentials.from_service_account_file(json, scopes=scopes)
default_headers = make_headers(proxy_basic_auth='user:password')
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat, headers=default_headers)
authed_http = AuthorizedHttp(credentials, http)
http = httplib2shim.Http(pool=authed_http)
storage_client = storage.Client(_http=http, credentials=credentials)
bucket = storage_client.get_bucket('mybucket')

I will certainly wait, many thanks.

Can you make any requests using the proxymanager alone? Like just
manager.get('http://httpbin.org')?
On Fri, Jul 28, 2017, 2:35 AM kipi78<EMAIL_ADDRESS>wrote:

Okay, the thing is that you passed an AuthorizedHttp to
httplib2shim.Http(), while I passed the ProxyManager and applied the
AuthorizedHttp on httplib2shim.Http(). So, I don't have this error anymore
with your code :)
The thing is now to use the ProxyManager, it looks like I don't manage to
do it. I need to configure a proxy with user/password and a certificate. My
code bellow leads to this error:
ProxyError: ('Cannot connect to proxy.', error('Tunnel connection failed:
407 Proxy Authentication Required',))
proxyUrl="http://host:80"
scopes=["https://www.googleapis.com/auth/devstorage.read_write"]
credentials = service_account.Credentials.from_service_account_file(json, scopes=scopes)
default_headers = make_headers(proxy_basic_auth='user:password')
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat, headers=default_headers)
authed_http = AuthorizedHttp(credentials, http)
http = httplib2shim.Http(pool=authed_http)
storage_client = storage.Client(_http=http, credentials=credentials)
bucket = storage_client.get_bucket('mybucket')
I will certainly wait, many thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3666#issuecomment-318607733,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUc-6dMyA7kQpT93bhJ0ZqH3honrudks5sSatlgaJpZM4OiXHB
.

Yes it looks like the ProxyManager alone is working:
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat, headers=default_headers)
a = http.request('GET','http://httpbin.org')
print(a.data)

The expected HTML is printed.

I wonder if the headers are being overridden. Why happens if you make a request and specify some random headers? http.request('GET','http://httpbin.org', headers={'foo': 'bar'})?

As soon as I insert an error in the login/password in the headers, this small request does not work. Same thing if I try with random headers. So, I guess the headers are not overridden.

Are you saying that adding any headers causes it to fail? Can I see the code and traceback?

Here is the code:
credentials = service_account.Credentials.from_service_account_file(json, scopes=scopes)
default_headers = make_headers(proxy_basic_auth='user:pass')
#default_headers = {'foo': 'bar'}
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat, headers=default_headers)
a = http.request('GET','http://httpbin.org')
print(a.data)
authed_http = AuthorizedHttp(credentials, http)
http = httplib2shim.Http(pool=authed_http)
storage_client = storage.Client(_http=http, credentials=credentials)
bucket = storage_client.get_bucket('mybucket')

With this version, the request to httpbin.org is printed but i got this traceback:

ProxyErrorTraceback (most recent call last)
 in ()
26 #storage_client = storage.Client(credentials=credentials, _http=httpStorage)
27
---> 28 bucket = storage_client.get_bucket('poc_python')
29 #blobs = bucket.list_blobs()
30

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/client.pyc in get_bucket(self, bucket_name)
171         """
172         bucket = Bucket(self, name=bucket_name)
--> 173         bucket.reload(client=self)
174         return bucket
175

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/_helpers.pyc in reload(self, client)
97         api_response = client._connection.api_request(
98             method='GET', path=self.path, query_params=query_params,
---> 99             _target_object=self)
100         self._set_properties(api_response)
101

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in api_request(self, method, path, query_params, data, content_type, headers, api_base_url, api_version, expect_json, _target_object)
297         response, content = self._make_request(
298             method=method, url=url, data=data, content_type=content_type,
--> 299             headers=headers, target_object=_target_object)
300
301         if not 200 <= response.status < 300:

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in _make_request(self, method, url, data, content_type, headers, target_object)
191         headers['User-Agent'] = self.USER_AGENT
192
--> 193         return self._do_request(method, url, headers, data, target_object)
194
195     def _do_request(self, method, url, headers, data,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in _do_request(self, method, url, headers, data, target_object)
221         """
222         return self.http.request(uri=url, method=method, headers=headers,
--> 223                                  body=data)
224
225     def api_request(self, method, path, query_params=None,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/httplib2/init.pyc in request(self, uri, method, body, headers, redirections, connection_type)
1657                     content = ""
1658                 else:
-> 1659                     (response, content) = self._request(conn, authority, uri, request_uri, method, body, headers, redirections, cachekey)
1660         except Exception, e:
1661             if self.force_exception_to_status_code:

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/httplib2/init.pyc in _request(self, conn, host, absolute_uri, request_uri, method, body, headers, redirections, cachekey)
1397             auth.request(method, request_uri, headers, body)
1398
-> 1399         (response, content) = self._conn_request(conn, request_uri, method, body, headers)
1400
1401         if auth:

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/httplib2shim/init.pyc in _conn_request(self, conn, request_uri, method, body, headers)
152
153         except Exception as e:
--> 154             raise _map_exception(e)
155
156         return response, content

ProxyError: ('Cannot connect to proxy.', error('Tunnel connection failed: 407 Proxy Authentication Required',))

If I uncomment the second line for default_headers or type an uncorect user/password, I got the same error and traceback + the html page of proxy error of my organization.
Do you need something else ?

So with a bit of testing using this script and mitmproxy:
import google.auth.transport.urllib3
from google.cloud import storage
import httplib2shim
from urllib3 import ProxyManager
from urllib3.util import make_headers

proxy_url = "http://localhost:8080"
proxy_headers = make_headers(proxy_basic_auth='user:pass')
http = ProxyManager(proxy_url=proxy_url, proxy_headers=proxy_headers)

# Test a direct request to httpbin
a = http.request('GET', 'http://httpbin.org/headers')
print(a.data)

# Test a direct request to httpbin using google credentials
credentials, project = google.auth.default()
authed_http = google.auth.transport.urllib3.AuthorizedHttp(
    credentials, http=http)

a = authed_http.request('GET', 'http://httpbin.org/headers')
print(a.data)

# Test a direct request using httplib2shim
shimmed_http = httplib2shim.Http(pool=authed_http)

response, content = shimmed_http.request('http://httpbin.org/headers')
print(response, content)

# Test a request using the client library
client = storage.Client(project=project, _http=shimmed_http)
print(list(client.list_buckets()))

It seems the following is true:

urrlib3.ProxyManager is sending the proxy-authorization header.
google.auth.transport.urllib3.AuthorizedHttp is sending the proxy-authorization header.
httplib2shim.Http is sending the proxy-authorization header.
However, using the client library does not send the proxy-authorization header.

I'm going to investigate some more, but it seems to confirm that the issue is that the proxy-authorization header isn't being sent when using the client.

Actually - I noticed something that makes a lot more sense: the proxy-authorization header is excluded on all https requests- this normal behavior for proxies.
I noticed your code is passing in headers to ProxyManager instead of proxy_headers. Maybe that's the issue?
If not, I would just wait until our next release where you can just configure requests globally to respect your proxy settings.

Yes, it looks like it's better when passing proxy_headers instead of headers.
I can list the blobs in my bucket.
But uploading and downloading do not seem to work.
Code is:
credentials = service_account.Credentials.from_service_account_file(json, scopes=scopes)
default_headers = make_headers(proxy_basic_auth='user:pass')
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat, proxy_headers=default_headers)
authed_http = AuthorizedHttp(credentials, http)
http = httplib2shim.Http(pool=authed_http)
storage_client = storage.Client(_http=http, credentials=credentials)
bucket = storage_client.get_bucket('mybucket')
blobs = bucket.list_blobs()

for blob in blobs:
    print(blob.name)
    #Download
    blob.download_to_filename("/path/"+blob.name)

#Upload
b = bucket.blob(blob_name="testblob.txt")
b.upload_from_filename("/path/testblob.txt")

Traceback is (for download):

ConnectionErrorTraceback (most recent call last)
 in ()
28 for blob in blobs:
29     print(blob.name)
---> 30     blob.download_to_filename("/path/"+blob.name)
31       #blob.delete()
32

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/blob.pyc in download_to_filename(self, filename, client)
485         """
486         with open(filename, 'wb') as file_obj:
--> 487             self.download_to_file(file_obj, client=client)
488
489         updated = self.updated

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/blob.pyc in download_to_file(self, file_obj, client)
467
468         try:
--> 469             self._do_download(transport, file_obj, download_url, headers)
470         except resumable_media.InvalidResponse as exc:
471             _raise_from_invalid_response(exc, download_url)

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/blob.pyc in _do_download(self, transport, file_obj, download_url, headers)
420         if self.chunk_size is None:
421             download = Download(download_url, headers=headers)
--> 422             response = download.consume(transport)
423             file_obj.write(response.content)
424         else:

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/resumable_media/requests/download.pyc in consume(self, transport)
62         result = _helpers.http_request(
63             transport, method, url, data=payload, headers=headers,
---> 64             retry_strategy=self._retry_strategy)
65         self._process_response(result)
66         return result

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/resumable_media/requests/_helpers.pyc in http_request(transport, method, url, data, headers, retry_strategy)
96         transport.request, method, url, data=data, headers=headers)
97     return _helpers.wait_and_retry(
---> 98         func, RequestsMixin._get_status_code, retry_strategy)

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/resumable_media/_helpers.pyc in wait_and_retry(func, get_status_code, retry_strategy)
144         object: The return value of func.
145     """
--> 146     response = func()
147     if get_status_code(response) not in RETRYABLE:
148         return response

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/auth/transport/requests.pyc in request(self, method, url, data, headers, **kwargs)
177
178         response = super(AuthorizedSession, self).request(
--> 179             method, url, data=data, headers=request_headers, **kwargs)
180
181         # If the response indicated that the credentials needed to be

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
500         }
501         send_kwargs.update(settings)
--> 502         resp = self.send(prep, **send_kwargs)
503
504         return resp

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/requests/sessions.pyc in send(self, request, **kwargs)
610
611         # Send the request
--> 612         r = adapter.send(request, **kwargs)
613
614         # Total elapsed time of the request (approximately)

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/requests/adapters.pyc in send(self, request, stream, timeout, verify, cert, proxies)
502                 raise ProxyError(e, request=request)
503
--> 504             raise ConnectionError(e, request=request)
505
506         except ClosedPoolError as e:

ConnectionError: HTTPSConnectionPool(host='www.googleapis.com', port=443): Max retries exceeded with url: /download/storage/v1/b/poc_python/o/testblob.txt?generation=1501592731181141&alt=media (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7fe5b1ecf6d0>: Failed to establish a new connection: [Errno -2] Name or service not known',))

That's because upload and download use a different transport (and it's one you can't modify unless you monkey patch _make_transport)

So, will it be possible to configure my own transport with proxy configuration or not ?

Soon httplib2 will be gone (I plan on doing a release tomorrow)

In the meantime, requests should honor the HTTP_PROXY and HTTPS_PROXY environment variables: http://docs.python-requests.org/en/master/user/advanced/#proxies

Uploading and downloading is now working using the HTTP_PROXY and HTTPS_PROXY environment variables :) .
But I still need the proxy headers to perform get_bucket.
It would be great to have the ability to configure everything once. I'm looking forward to the next release :)

Good deal. Glad we could help. :)

I have installed the new release (pip install --upgrade google-cloud) so that I now have google-cloud==0.27.0, google-cloud-core==0.26.0 and google-cloud-storage==1.3.1.
I don't need httplib2shim anymore, right ? I can't perform get_bucket. My code:
credentials = service_account.Credentials.from_service_account_file(json, scopes=scopes)
default_headers = make_headers(proxy_basic_auth='user:pass')
http = ProxyManager(proxy_url=proxyUrl, ca_certs=pathCertificat, proxy_headers=default_headers)
authed_http = AuthorizedHttp(credentials, http)
storage_client = storage.Client(_http=authed_http, credentials=credentials)
bucket = storage_client.get_bucket('mybucket')

I got the following traceback:

TypeErrorTraceback (most recent call last)
 in ()
23 #storage_client = storage.Client(credentials=credentials, _http=httpStorage)
24
---> 25 bucket = storage_client.get_bucket('mybucket')
26 blobs = bucket.list_blobs()
27

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/client.pyc in get_bucket(self, bucket_name)
171         """
172         bucket = Bucket(self, name=bucket_name)
--> 173         bucket.reload(client=self)
174         return bucket
175

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/storage/_helpers.pyc in reload(self, client)
97         api_response = client._connection.api_request(
98             method='GET', path=self.path, query_params=query_params,
---> 99             _target_object=self)
100         self._set_properties(api_response)
101

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in api_request(self, method, path, query_params, data, content_type, headers, api_base_url, api_version, expect_json, _target_object)
288         response = self._make_request(
289             method=method, url=url, data=data, content_type=content_type,
--> 290             headers=headers, target_object=_target_object)
291
292         if not 200 <= response.status_code < 300:

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in _make_request(self, method, url, data, content_type, headers, target_object)
181         headers['User-Agent'] = self.USER_AGENT
182
--> 183         return self._do_request(method, url, headers, data, target_object)
184
185     def _do_request(self, method, url, headers, data,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/cloud/_http.pyc in _do_request(self, method, url, headers, data, target_object)
210         """
211         return self.http.request(
--> 212             url=url, method=method, headers=headers, data=data)
213
214     def api_request(self, method, path, query_params=None,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/urllib3/request.pyc in request(self, method, url, fields, headers, **urlopen_kw)
64             return self.request_encode_url(method, url, fields=fields,
65                                            headers=headers,
---> 66                                            **urlopen_kw)
67         else:
68             return self.request_encode_body(method, url, fields=fields,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/urllib3/request.pyc in request_encode_url(self, method, url, fields, headers, **urlopen_kw)
85             url += '?' + urlencode(fields)
86
---> 87         return self.urlopen(method, url, **extra_kw)
88
89     def request_encode_body(self, method, url, fields=None, headers=None,

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/google/auth/transport/urllib3.pyc in urlopen(self, method, url, body, headers, **kwargs)
212
213         response = self.http.urlopen(
--> 214             method, url, body=body, headers=request_headers, **kwargs)
215
216         # If the response indicated that the credentials needed to be

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/urllib3/poolmanager.pyc in urlopen(self, method, url, redirect, **kw)
434             kw['headers'] = self._set_proxy_headers(url, headers)
435
--> 436         return super(ProxyManager, self).urlopen(method, url, redirect=redirect, **kw)
437
438

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/urllib3/poolmanager.pyc in urlopen(self, method, url, redirect, **kw)
319             response = conn.urlopen(method, url, **kw)
320         else:
--> 321             response = conn.urlopen(method, u.request_uri, **kw)
322
323         redirect_location = redirect and response.get_redirect_location()

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/urllib3/connectionpool.pyc in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
615                                                      connection=response_conn,
616                                                      retries=retries,
--> 617                                                      **response_kw)
618
619             # Everything went great!

/gpfs/user/u515866/env_python2/lib/python2.7/site-packages/urllib3/response.pyc in from_httplib(ResponseCls, r, **response_kw)
465                            strict=strict,
466                            original_response=r,
--> 467                            **response_kw)
468         return resp
469

TypeError: init() got an unexpected keyword argument 'data'

@kipi78 That's correct. Now the httplib2.Http.request interface is wrong, i.e. it doesn't accept the keyword data

So, I don't understand. Am I doing something wrong here ?

Yes / no. You no longer need to use httplib2shim and using it is now an error.

I agree with that but I'm no longer using it as you can see in the code.

Sorry I'm not familiar, where does ProxyManager come from?

ProxyManager is from urllib3 import ProxyManager. It is supposed to act like a PoolManager. And I guess it is the best way for me to configure my proxy, but I'm opened to a better solution :)

@kipi78 now that requests is our default transport you don't need to use httplib2 or urllib3. You should be able to just set the HTTP_PROXY and HTTPS_PROXY environment variables and pass anything special at all into _http.

Hi,
Alright, I was wondering how to specify the certificate but it is a bundled feature of requests, we just need to export REQUESTS_CA_BUNDLE. It is now working fine with a very simple storage_client = storage.Client() :)
Thank you !

Great to hear!
On Wed, Aug 9, 2017, 1:10 AM kipi78<EMAIL_ADDRESS>wrote:

Hi,
Alright, I was wondering how to specify the certificate but it is a
bundled feature of requests, we just need to export REQUESTS_CA_BUNDLE.
It is now working fine with a very simple storage_client =
storage.Client() :)
Thank you !
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/GoogleCloudPlatform/google-cloud-python/issues/3666#issuecomment-321185214,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAPUc8xcp8mktOll_IDV55nC3X2ooACnks5sWWllgaJpZM4OiXHB
.


lite server config not working

this is my bs-config.js.
var proxy = require('http-proxy-middleware');

var apiProxy = proxy('/api', {
	target: 'localhost:8444',
	changeOrigin: true   // for vhosted sites
});

module.exports = {
	server: {
		middleware: {
			1: apiProxy
		}
	}
};

the default page is loading fine,
but when I set my url to: http://localhost:3000/my-route2
I get 404 from the server.
the angular router doesn't even get the request.

Think the missing protocol in your proxy target is the issue.
Try:
target: 'http://localhost:8444'

No, still 404 :(

Don't think this a library issue.
The scarse information you're providing is not really helpful...

Make sure the server http://localhost:8444/api is running and accessible.

Provide detailed logging when you add the proxy config logLevel: debug

Sorry, I added the dependencies to the first post.
after setting the logLevel I see this error line at the console:

(index):34 GET http://localhost:3000/browser-sync/browser-sync-client.2.12.12.js

the server is up but I never really call him (yet)
Thank you.

ok, I found the broblem.
in my npm scripts I have:
 "lite": "lite-server --entry-file=index.html",
The bs-config script overrun this configuration param.
I had to add a fallback to solve my problem:
var proxy = require('http-proxy-middleware');

module.exports = {
	server: {
		middleware: {
			1: proxy('/forecasts', {
				target: 'http://api.aerisapi.com/forecasts/',
				changeOrigin: true   // for vhosted sites, changes host header to match to target's host
			}),
			2: require('connect-history-api-fallback')({index: '/index.html', verbose: true})
		}
	}
};

Thanks chimurai for the help.

Glad to hear you got it sorted.


Added missing type="button" on DevTools-button

Fixes "Button type attribute has not been set"-issue reported by Edge DevTools.

Um... how can adding type="button" on a button-element can result in -39.46% tests 🤔


Improve Navbar

Do you want to request a feature or report a bug?

Do the checklist before filing an issue:

[x] feature request

create a feature request

[x] Have an idea for a feature?
[x] Provide screenshots where appropriate

Expected Behavior
I want to improve UI of navbar. Margin and padding are not so good. Also the leafy border are not looking so good.
Screenshot

hi there, I can change the margin and padding to a better looking view. And by leafy border, do you mean the color of the navbar. If color is the problem, then I can change it in various different shades of green.


CRPS for CDF API docstring

@nicholasloveday @tennlee
When I was looking for another API entry, I happened to notice something in the CRPS for CDF API docstring in the development/latest branch (https://scores.readthedocs.io/en/latest/api.html#scores.probability.crps_cdf). Below is a screen shot of the sentences I happened to notice:

I am confused by what these sentences mean. In particular, is the sentence "When include_components=True." meant to be there, and if so, is it meant to be part of either the preceding or following sentence?

I think the mistake here is the full stop after "True", that can be removed. The nature of the decomposition in crps_for_cdf is different to the nature of the decomposition in crps_for_ensemble, so the intention is to convey that people shouldn't assume it's the same thing even though they are both valid in context.

Since the decomposition is only provided, the caveat only applies when include_components is set to True in the optional argument.

Also, the source code has :py:func:scores.probability.crps_for_ensemble decomposition - in the docs this doesn't form a clickable link. I think the backtick might need to go after the word ensemble and before the word decomposition.

I think that " include_components=True." should have double back ticks around it.

And yes, I agree with @tennlee that the full stop should be removed.


$$raf would be useful if it were public

Could the requestAnimationFrame provider ($$raf) be made a public API? It would be useful for things that can't be ng-animated very easily such as SVG.

@caitp @matsko Not that I need this anymore, but I don't see any progress on it, should this be closed?

Closing for now. Thanks for the heads up.

@caitp @matsko does this cause any issues if it were made public? I'm using rAF/setTimeout again and it seems dumb for me to rewrite what was already written by Angular core and could be made public for others to use as well.


Updates to joey_sprint related configs and templates

quick comments:

for the new lua modulefile template , need to edit config.yaml and joey preparation functions accordingly
packages.yaml: are you sure we want cmake as buildable? :)
packages.yaml: are you sure about indentation level of the file group permissions block? (did not have the chance to check yet)


[Task]: Update dev tools -> it operations in connector keywords

Connector Name
other (None Listed Above)
Task Description
In Ballerina.toml of handwritten connectors,
dev tools -> it operations change has to be added in keywords

https://github.com/ballerina-platform/module-ballerinax-github/pull/162
https://github.com/ballerina-platform/module-ballerinax-azure.eventhub/pull/53
https://github.com/ballerina-platform/module-ballerinax-azure-cosmosdb/pull/37
https://github.com/ballerina-platform/module-ballerinax-mongodb/pull/138
https://github.com/ballerina-platform/module-ballerinax-redis/pull/100
https://github.com/ballerina-platform/module-ballerinax-aws.sqs/pull/49
https://github.com/ballerina-platform/module-ballerinax-azure.ad/pull/32

In ASB connector, this will be done via https://github.com/ballerina-platform/module-ballerinax-azure-service-bus/pull/46

Closing since this task is done


Fix to issue #362: Error is not caught if WebSocket constructor throws S...

Fix to issue https://github.com/Automattic/engine.io-client/issues/362

I don't see a websocket constructor call being caught in this PR. Which proper access or method is the one that actually throws?

See the attached screenshot of the uncaught exception. From socket.io.js line 5039 the flow of control goes down to engine.io.js line 1340 (self.onLoad call) which does not catch the exception. Note that the catch below (line 1353) does not work because line 1340 is inside a separate function.

Here is the complete stacktrace starting from socket.io.js line 5044:
ws (socket.io.js:5044)
18.WS.doOpen (socket.io.js:3224)
13.Transport.open (socket.io.js:2164)
12.Socket.probe (socket.io.js:1755)
12.Socket.onOpen (socket.io.js:1777)
12.Socket.onHandshake (socket.io.js:1836)
12.Socket.onPacket (socket.io.js:1799)
(anonymous function) (socket.io.js:1631)
8.Emitter.emit (socket.io.js:1217)
13.Transport.onPacket (socket.io.js:2229)
17.Polling.onData.callback (socket.io.js:3044)
(anonymous function) (socket.io.js:4450)
24.exports.decodePayloadAsBinary (socket.io.js:4449)
24.exports.decodePayload (socket.io.js:4217)
17.Polling.onData (socket.io.js:3048)
(anonymous function) (socket.io.js:2647)
8.Emitter.emit (socket.io.js:1217)
16.Request.onData (socket.io.js:2782)
16.Request.onLoad (socket.io.js:2851)
16.Request.create.xhr.onreadystatechange (socket.io.js:2728)

Note that socket.io.js line 2728 (Request.create.xhr.onreadystatechange) actually comes from engine.io-client node module since engine.io.js file contents gets embedded inside socket.io.js file by the build system.

Is this reproducible in IE?
If the error is on a specific parameter access we should guard that access
not everything.
If we catch the error does it continue working?
On Monday, January 12, 2015, kompa3<EMAIL_ADDRESS>wrote:

Note that socket.io.js line 2728 (Request.create.xhr.onreadystatechange)
actually comes from engine.io-client node module since engine.io.js file
contents gets embedded inside socket.io.js file by the build system.
—
Reply to this email directly or view it on GitHub
https://github.com/Automattic/engine.io-client/pull/363#issuecomment-69560376
.

The error reproduces in IE that operates in a WebBrowser component that embedded into .NET application. It seems that the embedded IE in some circumstances causes WebBrowser constructor to raise SecurityException.
The situation where the error happens is related to FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER settings of IE, ie. the maximum number of WebSocket connections that IE allows per server. For some reason I have not been able to reproduce the issue with a desktop version of IE. However, the embedded WebBrowser version of IE seems to have a hard-coded number of five WebSocket connections per server (ie. the default value of FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER setting as described in the above link).
With the fix of the pull request, ie. the catching of the error, Socket.IO successfully downgrades to http polling. Without the fix, there is an uncaught exception and Socket.IO object does not raise any error events to the application.

I love the idea of fixing this, but it seems like we're try/cathing too early ?

Also, I really appreciate the thoroughness of your explanations @kompa3, both here and in the referenced issue.

It's also worth noting that if we do add the try/catch in the "correct place" (which is potentially in the constructor of the WebSocket transport), we need to add a comment referencing this thread.

Well I am not sure about the whole design. However, to me it seems that xhr.onreadystatechange function is the last place where you can catch the exception before it goes out of sight as an uncaught exception. There is similar error handling taking place all over Request.prototype.create function so I think my proposal is in line with the rest of the code.

Anyway, if you have better suggestions I could test them in my environment where it is easy to reproduce the uncaught exception behavior.

But that's for XHR, and I thought the error was thrown by WebSocket? XHR is only used for polling.

XHR seems to call WebSocket constructor via a very long function call stack. While I don't understand the complete functionality of it, the stack trace is something like the following (see the complete stack trace in above comments):

xhr.onreadystatechange function (socket.io.js:2727) is the top-most function in the call stack where the exception handling is currently missing
It calls Request.onData (socket.io.js:2776)
Which in turn calls Request.onLoad (socket.io.js:2845)
Which in turn calls Polling.onData (socket.io.js:3042)
Which in turn uses anonymous function (socket.io.js:2647)
Which in turn calls Emitter.emit (socket.io.js:1217)
etc. etc. see the above comments for the complete stack trace
Which is turn calls WS.doOpen (socket.io.js:3218)
Which in turn calls ws (socket.io.js:5039) which tries to construct WebSocket object that raises the exception that remains uncaught in the function call stack

I have debugged it and if WebSocket constrution causes a SecurityException then it is XHR (xhr.onreadystatechange function) where the exception goes. If you add try-catch to onreadystatechange function then the WebSocket exception gets caught and Socket.IO downgrades to use polling instead of using WebSocket protocol.

How about you add it here:
https://github.com/Automattic/engine.io-client/blob/master/lib/transports/websocket.js#L90
and when you catch it you this.emit('error', err); ?

I bet it might work, I could give it a try. There is no other error emitting in the file though, hmm..
Yet, even if the error was caught there, in my opinion xhr.onreadystatechange function still must have an exception handling. That's because it is a top-most function in a call stack and if there happens any exception that it does not catch, the exception will remain uncaught. Imho, that is in line with the other error handling in polling-xhr.js file and just seems to be accidentally missing from that one function.

Closed by #475


Logo At Footer Redirects to Github Instead of Website

The Logo or precisely at footer the Covid19India Title Redirects user to this Github Repo , Instead It should Redirect to the Main Website
Its Better to set the Redirect to Homepage as we already have the Github Link in the Icon

/claim

There is already a home button to redirect you to the main website in the nav bar. I feel this is not required.
The foorter covid19india is for the organization and they link it to their github profile


export component name error

SketchPikcer rename to SketchPicker

 SketchPikcer rename to SketchPicker

Thank you for your feedback. It has been fixed in v0.0.4


ocproxy: 1.50 -> 1.60

Motivation for this change
Update
Things done

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

[x] NixOS
[ ] macOS
[ ] Linux

[x] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[x] Fits CONTRIBUTING.md.

ping @joko

Meanwhile, 1.70 has been released. Per https://github.com/cernekee/ocproxy/blob/master/CHANGES the 1.50->1.70 delta looks pretty safe.

Update it as soon as I can
Sent from my iphone
On Mar 5, 2017, 2:56 PM -0600, Joachim F<EMAIL_ADDRESS>wrote:

Meanwhile, 1.70 has been released. Per https://github.com/cernekee/ocproxy/blob/master/CHANGES the 1.50->1.70 delta looks pretty safe.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub (https://github.com/NixOS/nixpkgs/pull/23368#issuecomment-284261978), or mute the thread (https://github.com/notifications/unsubscribe-auth/AAHL76MTSa_OrkPWbN6ZO5JhtKPzrxoXks5riyGYgaJpZM4MQZ7z).

Merged in 3686e1bbc8, thank you! Put in another PR for the 1.70 when you get a chance.

@grahamc as soon as I can 😀


How Do I train my Segmentation Model with ResNet Strikes Back?

I am trying to apply ResNet strikes back into my segmentation model. I would just like to ask how do I train my model using ResNet Strikes Back procedures.
Which code should I point to, are there models for this, etc.?

@sarmientoj24 this is a discussion q not a bug as per the intructions


Add local cache used pages size metric

What changes are proposed in this pull request?
Add local cache pages used metric
Why are the changes needed?
Sometimes we not only need space used information, but also the pages size information. The pages size give us meta information for future analyze.
Does this PR introduce any user facing changes?
Please list the user-facing changes introduced by your change, including

change in user-facing APIs
addition or removal of property keys
webui

Codecov Report

Merging #14585 (662edf1) into master (da3697b) will decrease coverage by 5.90%.
The diff coverage is 71.42%.

@@             Coverage Diff              @@
##             master   #14585      +/-   ##
============================================
- Coverage     35.58%   29.67%   -5.91%
+ Complexity     7694     6211    -1483
============================================
  Files          1494     1494
  Lines         87824    87831       +7
  Branches      10459    10459
============================================
- Hits          31251    26064    -5187
- Misses        53966    59609    +5643
+ Partials       2607     2158     -449

Impacted Files
Coverage Δ

...a/alluxio/client/file/cache/LocalCacheManager.java
0.00% <0.00%> (-88.62%)
:arrow_down:

...ommon/src/main/java/alluxio/metrics/MetricKey.java
98.01% <100.00%> (+<0.01%)
:arrow_up:

...src/main/java/alluxio/client/UnderStorageType.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...java/alluxio/master/journal/raft/OnceSupplier.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...alluxio/client/file/cache/store/PageStoreType.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...a/alluxio/metrics/sink/RatisDropwizardExports.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...xio/client/file/cache/evictor/LRUCacheEvictor.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...lluxio/master/journal/JournalEntryAssociation.java
0.00% <0.00%> (-100.00%)
:arrow_down:

.../client/block/policy/options/GetWorkerOptions.java
0.00% <0.00%> (-100.00%)
:arrow_down:

...client/file/cache/store/LocalPageStoreOptions.java
0.00% <0.00%> (-100.00%)
:arrow_down:

... and 151 more

Continue to review full report at Codecov.

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

@beinan Would you please take another look?

@beinan ping

/ping @beinan

Hi @beinan , we have some bad experience for the counter which counted by increase and decrease, it maybe wrong when we encounter exception, how about use mPageMap.size() instead of the mPages and Metrics.PAGES

Hi @beinan , we have some bad experience for the counter which counted by increase and decrease, it maybe wrong when we encounter exception, how about use mPageMap.size() instead of the mPages and Metrics.PAGES

Good call, create https://github.com/Alluxio/alluxio/pull/15121 to use the actual size of the map instead of the mPages

hello @bzheng888 & @maobaolong , since the metrics of num of pages has been there already, can I shutdown this PR?

@beinan LGTM! Thanks!


Sequential Transformers

Amazing for your Sequential Transformers, have you plan to release Sequential Transformers code ?

Hi @lxy5513, please refer to annotated_prtr.ipynb for implementation of the sequential (end-to-end) model variant.

Thanks for your kind reply @ricolike .
In annotated_prtr.ipynb, I find the architecture code,
Class PRTR_sequential needs the following arguments:
backbone: a customizable CNN backbone which returns a pyramid of feature maps with different spatial size
transformer: a customizable Transformer for person detection (1st Transformer)
transformer_kpt: a customizable Transformer for keypoint detection (2nd Transformer)
level: from which layers of pyramid we will extract features
x_res: the width of STN-cropped featrure map fed to 2nd Transformer
y_res: the height of STN-cropped featrure map fed to 2nd Transformer

but, I can't find those specific implementation.


skip odo create for existing devfiles

/kind feature
Which functionality do you think we should add?
If a folder already has a devfile, odo should be able to skip the odo create and it should be possible to call odo push directly.
Why is this needed?
It reduces getting started with one command.

duplicate of https://github.com/openshift/odo/issues/3144
Support for this was recently merged in  https://github.com/openshift/odo/pull/3254
/triage duplicate
/close


add SCC files for running HPO in a restricted manner

This PR intends to solve the issue #94
Create a SCC file to in which relevant constraints are added.
Add the specific userID in the deployment.yaml_template who will have the access same as the one in dockerfile
Add service account and rolebinding to link the SCC.
Signed-off-by: Saad Khan<EMAIL_ADDRESS>Signed-off-by: Saad Khan<EMAIL_ADDRESS>

Sanity Test Results
########### Results Summary of the test suite hpo_api_tests ##########
hpo_api_tests took 220 seconds
Number of tests performed 1
Number of tests passed 1
Number of tests failed 0

~~~~~~~~~~~~~~~~~~~~~~ hpo_api_tests passed ~~~~~~~~~~~~~~~~~~~~~~~~~~

************************************** done *************************************

*********************************************************************************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Overall summary of the tests ~~~~~~~~~~~~~~~~~~~~~~~
Total time taken to perform the test 220 seconds
Total Number of test suites performed 1
Total Number of tests performed 1
Total Number of tests passed 1
Total Number of tests failed 0

*********************************************************************************
########################################################################

I have tested on openshift, all tests worked fine except grpc which has an open issue #77


Do not parse the markdown when editing a message if the message is too long

Details
Related issue: https://github.com/Expensify/App/pull/8691
Fixed Issues

$ https://github.com/Expensify/App/issues/15307
Tests

Send a very long (over 10k characters) message in Newdot. Surround it by * * to make it bold
Confirm it is NOT displayed bold, as we skip formatting for very long messages
Edit the message and add an extra character and save it
Confirm we DO NOT display it bold
Edit it again to make it shorter than 10k characters
Confirm we DO display it bold now

Offline tests
Not relevant
QA Steps
Same as tests

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is correct English and approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG)

[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

Setting @sobitneupane as C+ reviewer, as they are the one on the issue

Comments addressed!

🚀 Deployed to staging by https://github.com/Luke9389 in version: 1.2.77-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
failure ❌

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/Luke9389 in version: 1.2.77-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/yuwenmemon in version: 1.2.77-4 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


[Feature][Doc] Add Config file introduce.

Purpose of this pull request
Add Config file introduce.

Check list

[ ] Code changed are covered with tests, or it does not need tests for reason:
[ ] If any new Jar binary package adding in your PR, please add License Notice according
New License Guide
[ ] If necessary, please update the documentation to describe the new feature. https://github.com/apache/incubator-seatunnel/tree/dev/docs

take a look now

LGTM, thanks @BenJFan . BTW, I change the sidebar position between Quick Start and Concept. Because I think the concept is based on users could start and run our first job, it is an advanced topic for users. So it should after quick start

Thanks for help.


Bootstrap v4 UI styling: Top and bottom nav

Note for Paul: This ticket includes reorganization of some navigation elements in addition to styling. Feel free to break out into separate stories if that's easier.

Top nav
Reorganization of links and menus

[x] Top nav link order should be Indicators, Browse, Reports
[x] Under Browse should be these options in the following order: Documents, Projects, Sites, Stakeholders
[x] Projects should take you to what we're currently calling Program Index…
[x] …with that page title renamed to Projects
[x] Change Firstname Lastname on the right side from a dropdown menu to a simple link that takes you straight to the profile page.

Styling

[x] We talked about having the top nav be fluid across the app, not just the IPTTs.
[x] Please take a look at the Browse and Reports drop down menus. They don't seem well integrated with the nav bar and kind of read like a pop-up dialogue. No strong opinions on how it should look, but here's what I mocked up, modeled on mercycorps.org

Bottom nav

[x] Unstick the bottom nav. Let it be free!
[x] Please take a look at the items on the right side separated by pipe characters. The spacing looks a bit tight to me, and the pipes look like they're darker than the text. If they're not going to match, my inclination would be to go a shade lighter instead of darker.

Renaming the Program Index page to Projects raises a couple of questions:

This is a global change, there are several pages with hardcoded breadcrumbs using “Program Index”. Is is safe to do a global change for these locations?
This string (and many others in breadcrumbs, navs, and page titles) are note localized. Should I be localizing these strings?

…To answer both my questions:

Yes
Yes

Can we make the top nav links higher contrast in resting state?

The following is something that can definitely wait if it's more efficiently tackled as part of a systematic look at responsiveness -- just let me know either way.
When the browser is narrowed, the downward-facing arrows wrap to a new line:


[BEAM-13638] Fix visibility of fields in SqsMessage (AWS Sdk v2)

Currently, with fields being package private, SqsMessage and with that SqsIO.read for AWS Sdk v2 is barely usable.

Visibility of all fields was fixed from package private to public.
[BREAKING] Datatype of timestamp fields was changed from String to long, which is obviously a breaking change but seems reasonable as this IO is most likely not used for obvious reasons.

Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:

[ ] Choose reviewer(s) and mention them in a comment (R: @username).
[ ] Format the pull request title like [BEAM-XXX] Fixes bug in ApproximateQuantiles, where you replace BEAM-XXX with the appropriate JIRA issue, if applicable. This will automatically link the pull request to the issue.
[ ] Update CHANGES.md with noteworthy changes.
[ ] If this contribution is large, please file an Apache Individual Contributor License Agreement.

See the Contributor Guide for more tips on how to make review process smoother.

GitHub Actions Tests Status (on master branch)

See CI.md for more information about GitHub Actions CI.

R: @aromanenko-dev


Earthdawn FASA Official - V315 - Bug Fixes and New Features

Submission Checklist
Required

[X ] The pull request title clearly contains the name of the sheet I am editing.
[X ] The pull request title clearly states the type of change I am submitting (New Sheet/New Feature/Bugfix/etc.).
[X ] The pull request makes changes to files in only one sub-folder.
[X ] The pull request does not contain changes to any json files in the translations folder (translation.json is permitted)

New Sheet Details
Changes / Description

Character Sheet Info Roll20 Internal Use only.

@Jiboux There are merge conflicts in this PR

Hello Nic,
I am unsure how there can be a conflict, and I have no way to resolve it
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-on-github
GitHub defines it by competing line changes. I am the only one editing this code, and this is the latest release.
Should I cancel & resubmit the pull request ? Any documentation I can look at to avoid the next pull request to be also in conflict ?

Hey @Jiboux
Merge conflicts can arise even when you're the only person changing the code.  In this case, it looks like this branch does not have your commits from last month in its history, so Github is uncertain how to resolve instances where your code differs from that last update.
You shouldn't have to make a new PR, just merge those changes on master into this branch - which should prompt you to fix the conflicts.  As this is the latest version, you'll just pick this branch's code wherever there's a "clash", then commit those changes.  You'll be left with the same final state of code, but your previous work will be accounted for in commit history, letting Github know that this work is aware of those previous commits.
To prevent this happening in future PRs, you'll want to make sure you are starting each new update branch in Github from a state that matches and reflects the current version of the sheet, with all your previous changes in its history.  This isn't always possible (say, for instance, you're working on two separate features simultaneously), so you can also just make sure to merge in the most current version of the sheet before you submit the PR.

OK, I think I'm good now... So the problem was I didn't merge my Jiboux repository to roll20 master before creating the new branch?

Hey @Jiboux! It's technically the opposite: you'd want to merge Roll20 Master into your repo to get the changes that are present on our end before submitting the PR. It looks like you've got it fixed, so you're good to go.

Thanks a lot for the merge...
Disgracefully as soon as loaded I saw a small bug that needed to be patched, so released a quick patch and did a pull. I know merges are weekly but am I too late for a quick merge ?

Le 14 sept. 2023 à 13:18, NorWhal @.***> a écrit :
Hey @Jiboux https://github.com/Jiboux! It's technically the opposite: you'd want to merge Roll20 Master into your repo to get the changes that are present on our end before submitting the PR. It looks like you've got it fixed, so you're good to go.
—
Reply to this email directly, view it on GitHub https://github.com/Roll20/roll20-character-sheets/pull/12146#issuecomment-1719850286, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARICXJWEN626CKL7PFL7GZTX2M367ANCNFSM6AAAAAA4UWKEFQ.
You are receiving this because you were mentioned.


experimental data

<EMAIL_ADDRESS>

@V1ct0ryan Sent!

thank you
----- Original Message -----
From: "Jay Young" @.>
To: jayoungo/SINS-GPS-Integrated-Navigation @.>
Cc: V1ct0ryan @.>, Mention @.>
Sent: Sun, 18 Sep 2022 20:28:53 -0700
Subject: Re: [jayoungo/SINS-GPS-Integrated-Navigation] experimental data (Issue #18)
@V1ct0ryan Sent!
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you were mentioned.Message ID: @.***>


GED 2023

Refactor

kube pkg broken into multiple sub-packages [^1]
Kubernetes and AWS related pkg util code to unstructured and awspkg respectively
Deleted duplicated util code
pkg common to generic and minor code file restructure
User facing new patterns introduced to the kube pkg applied to the aws pkg (this will allow for a later refactor that will introduce the benefits of the kube refactor without changing the library contract again)
Directories matching pkg names [^2]
Kubedog's method Run and SetScenario combined

Bug fix

DeleteResourcesAtPath not properly deleting files with multiple resources
DeleteResourcesAtPath failing when a resources was not found

Added

Subtitles support for syntax doc generation
Working examples

Usage
kube pkg built-in templating capabilities
generic pkg templating capabilities

Documentation

Examples
README
Syntax (automatic)

[^1]: TODO: explain the reason for the major refactor and the added benefits
[^2]: From Effective Go: "Another convention is that the package name is the base name of its source directory; the package in src/encoding/base64 is imported as "encoding/base64" but has name base64, not encoding_base64 and not encodingBase64."

Example of how this refactor makes testing easier.
Before
func TestClient_VerifyInstanceGroups(t *testing.T) {
	type fields struct {
		KubeInterface      kubernetes.Interface
		DynamicInterface   dynamic.Interface
		DiscoveryInterface discovery.DiscoveryInterface
		FilesPath          string
		TemplateArguments  interface{}
		WaiterInterval     time.Duration
		WaiterTries        int
		Timestamps         map[string]time.Time
	}
	tests := []struct {
		name    string
		fields  fields
		wantErr bool
	}{
		// TODO: Add test cases.
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			kc := &Client{
				KubeInterface:      tt.fields.KubeInterface,
				DynamicInterface:   tt.fields.DynamicInterface,
				DiscoveryInterface: tt.fields.DiscoveryInterface,
				FilesPath:          tt.fields.FilesPath,
				TemplateArguments:  tt.fields.TemplateArguments,
				WaiterInterval:     tt.fields.WaiterInterval,
				WaiterTries:        tt.fields.WaiterTries,
				Timestamps:         tt.fields.Timestamps,
			}
			if err := kc.VerifyInstanceGroups(); (err != nil) != tt.wantErr {
				t.Errorf("Client.VerifyInstanceGroups() error = %v, wantErr %v", err, tt.wantErr)
			}
		})
	}
}

After
func TestVerifyInstanceGroups(t *testing.T) {
	type args struct {
		dynamicClient dynamic.Interface
	}
	tests := []struct {
		name    string
		args    args
		wantErr bool
	}{
		// TODO: Add test cases.
	}
	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			if err := VerifyInstanceGroups(tt.args.dynamicClient); (err != nil) != tt.wantErr {
				t.Errorf("VerifyInstanceGroups() error = %v, wantErr %v", err, tt.wantErr)
			}
		})
	}
}


In memory repository not handling getEntityNeighbourhood properly

In memory repository not handling getEntityNeighbourhood properly.
If there is a Glossary related to)with TermAnchor) a GlossaryTerm, which has a spineObject classification, then get neighbourhood depth 1 from glossary with SpineObject in the classification list should return the glossaryTerm and the glossary.
At the moment there is a bug in the code where it is incorrectly checking that the root entity has the classification; which it does not so only the glossary is returned.

fixed


Update Composer dependencies (2021-12-18-00-03)

Visual regression test passed!
View the visual regression test report


add block-shape classes to SVG

It'll make the output easier to navigate programmatically if either the parent g tag or the block's background path has a class with its shape
I actually have a use case for this one: while writing this I had to resort to block color to identify the reporters

I don't really understand why you'd want to navigate the output programmatically. This isn't really an intended use case.

Sorry, I'm not going to do this. If it's super-important to you, maybe send a patch and I'll see what I think then. :)