Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add ability to select path segments using Python re regexprs; follow on to PR#146 - #177

Closed
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge
Closed

Add ability to select path segments using Python re regexprs; follow on to PR#146 #177
AlainLich wants to merge 16 commits into
dpath-maintainers:masterfrom
AlainLich:AL-master4merge

Conversation

@AlainLich

Copy link
Copy Markdown

Hi, this is a follow-on of my previous PR (#146) on same subject; apparently it was simpler for me to use a different branch.

This has run Action https://github.com/AlainLich/dpath-python/actions/runs/3684590771 in my branch AL-master4merge. I have added tests exercising this with most functions, and documented in README.rst

All details are in the list of commits, including documentation, tests,...

I hope this suits your needs, let me know if there are still issues for merging in the main baseline.

Recovered 1) tests/test_path_ext_py from PR submission
2) some github workflows used to validate PR submission
 Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Includes:
- integration of extension on dpath-python
- improvement of tests (under nose2, with scripts test/noseRunner to control code options)
- improvement of documentation in README.rst
Baseline for integration:
commit ea64635 (tag: v2.1.1, origin/master, origin/HEAD, master, AL-master4merge)
Merge: 702b5dd38007df
Author: moomoohk <moomoohk2@gmail.com>
Date: Wed Nov 30 17:16:05 2022 +0200
Note: at this time, no test wrt. Github.Actions has been made (yet)
Resolved conflicts:
dpath/segments.py
dpath/version.py
Testing to be redone!
 - tests improved and running locally
- documentation updated
Follow-up PR: "Add ability to select path segments using Python re regexprs" dpath-maintainers#146
on June 1, 2021
Baseline for merge:
commit 45b3488 (tag: v2.1.2, origin/master, origin/HEAD, master)
Author: moomoohk <2220203+moomoohk@users.noreply.github.com>
Date: Mon Dec 5 09:52:05 2022 +0200
…on enhancements
1) suppress dependency on mock now integrated as unittest.mock
2) avoids warnings concerning invalid escape sequences: either use raw strings or
use double backslash: testing both
3) detailed the issue of such escape sequences in re.regexp in README.rst,
giving example of both techniques
No change in .yml: rerunning should resolve identified issues
moomoohkand others added 5 commits December 17, 2022 18:12
…path for pypy
- Improved Github actions (clean up, test under pypy3)
- formatting in accordance with Flake8, deal with errors diagnosed by Flake but
accepted by python3
- moved test tools to dir test-utils
- tox.ini, flake.ini: avoid spurious diagnostics
…ing StringMatcher capability:
1) supports extension by re.regex (re.Pattern.match)
2) supports duck typed Duck_StringMatcher derived classes which permit user defined pattern matcher
3) included tests and documenation
4) dealt with Flake8 diagnostics
Also found a random rare error in test_segments.test_view, left Pdb obtained information in the source
file (see bottom of tests/test_segments.py). This corresponds with an unrealistic situation random
generated by hypothesis, not easily reproducible for lack of random seed.
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

  • after looking at yesterday's tests, failure was apparently caused by lack of support for typing.Protocol, which implements https://peps.python.org/pep-0544/ , because pypy's version was older than the one I have been using.

  • I am preparing an improved version that supports both PEP-544 compliant and ignorant compilers, with a little bit more work for the user in the latter case.

  • Apparently most of the work TBD is in the testing, so don't expect a revised version before next week-end.

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain,
I've cleared enough from the backlog and now I'd like to focus on your PR.
After reviewing the changes you've made it's clear a lot of work has been put in and that's much appreciated.
That said, I feel that a lot of the changes included aren't within the scope of the feature addition you're proposing.

If the core functionality (adding regexes to paths) works well enough then I'd like to restructure this PR. I hope that's ok with you!

Perhaps the other changes can be considered separately.

Thanks.

@AlainLich

AlainLich commented Jan 10, 2023 via email

Copy link
Copy Markdown
Author

@AlainLich

AlainLich commented Jan 11, 2023 via email

Copy link
Copy Markdown
Author

AlainLichand others added 4 commits January 11, 2023 17:49
Deals with
- issues testing with pypy (an possibly some older Pythons)
- flake8 diagnostics
Other developments to go to separate PR
@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk

a) this is fine, do you expect me to do anything?
b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and
fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

@moomoohk

Copy link
Copy Markdown
Collaborator

Hi Alain

Hi @moomoohk

a) this is fine, do you expect me to do anything? b) while you are on this, could you make your workflow "deploy" dependent on your user name; the way things are set up now, each time I pull master for synchronising (and if the version has changed), it launches (under my name) and fails as it should... and I get some spurious mail. ( https://github.com/AlainLich/dpath-python/actions/runs/3900678773)

Something like the following should work (not tried):

deploy:
... # Check that this only occurs on maintainer repo
if: ${{ github.actor == "dpath-maintainers" }} 

Have a good day :-)

Hi Alain,
I might have some time to go through your changes over the next few days.
I would much appreciate if you could open a separate PR/restructure this one to include the necessary changes for your proposed features.
I'll be glad to review miscellaneous infrastructure changes in a separate PR.
As it stands, the miscellaneous changes are blocking your feature.

Thanks and regards

Comment threaddpath/options.py
# https://peps.python.org/pep-0604/#isinstance-and-issubclass
# https://bugs.python.org/issue44529

try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this check needed for?

Comment threaddpath/segments.py
from dpath.types import PathSegment, Creator, Hints, Glob, Path, SymmetricInt

import re
try:

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dpath's minimum supported version is Python 3.7 making this check redundant

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk,
I will try to look into this before the end of next week-end. I will send you a few questions about what to keep in the mean time. Will keep the bare minimum for the feature to work, and for tests, and prepare a PR based on current master commit.

For now:
a) do you want to always enable the feature ? to allow enabling/disablig by DPATH_ACCEPT_RE_REGEXP ?
b) I will review tests I have added for their usefulness

Regards

@AlainLich

Copy link
Copy Markdown
Author

Hi @moomoohk
following your remarks, I submitted PR #186 as replacement for this one, with only required changes. This PR #177 can be closed.

You were right to spot not needed stuff, some that can be assumed for Python >= 3.7, others that were left from my exercise with duck-typed generalization.

Regards
Alain

@moomoohk

Copy link
Copy Markdown
Collaborator

May we close this PR for the time being?

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@AlainLich@moomoohk