Still going to sleep - running Fedora 36

I'm running Fedora 36 on a Lenovo Legion 7, and I ran the simple code:
from wakepy import set_keepawake, unset_keepawake
set_keepawake()
Yet my computer still goes to sleep after a few minutes. What's happening?

Hi @noelgarber and thanks for filing the issue!
I think we could check a two things here:
1) systemctl

As mentioned in the docs, wakepy uses systemctl mask to prevent computer going to sleep, when used on Linux. Does your system have systemd?  If yes, try to run

systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

and see if that prevents your computer from going to sleep or not
2) privileges
The systemctl command needs sudo privileges. Because current version of wakepy uses systemctl, it needs sudo. Did you run you script with sudo privileges?

Thanks for the reply! Here are the answers:

Yes, I do have systemd (as verified by ps -p 1 -o comm=), and no, that command does not prevent my computer from going to sleep - it goes to sleep after 5 minutes even after running that. Here is what came up in terminal:

[ngarber@legion7 ~]$ systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
Created symlink /etc/systemd/system/sleep.target → /dev/null.
Created symlink /etc/systemd/system/suspend.target → /dev/null.
Created symlink /etc/systemd/system/hibernate.target → /dev/null.
Created symlink /etc/systemd/system/hybrid-sleep.target → /dev/null.
After typing the command, it prompts for a password before executing, which I entered. Same behaviour as when I run set_keepawake() from wakepy.

It asks for a password when I run set_keepawake() from wakepy, so I assume entering the password gives the necessary permissions.

Unfortunately, when I run sudo python3 and then try to run from wakepy import set_keepawake, unset keepawake, it returns ModuleNotFoundError: No module named 'wakepy'. Somehow, when running inside sudo, Python can't find wakepy despite it being installed on my computer...

Hi and sorry for long delay!
For part 2, I think it is because sudo has different set of environment variables than your user, and wakepy is installed to a folder which is added (only) to the PATH of your current user. See, for example: How to make sudo preserve $PATH?. Based on that I guess that
sudo env "PATH=$PATH" python3

would preserve your PATH with sudo.

For part 1, I found a least this answer which has a comment which says that commands like
sudo systemctl mask suspend.target
sudo systemctl mask sleep.target

would not work on Fedora. I tried to search for a solution for Google but could not find much of anything useful. One solution at ask.fedoraproject.org/ adviced to install xset and run
xset s off

Looking at wiki.archlinux.org it seems that the command is merely "Disable screen saver blanking", and
xset s off -dpms

would be "Disable DPMS and prevent screen from blanking", where DPMS = Display Power Management Signaling. Not sure if that only applies to the display, though. At the same page it also mentions  setterm.
Let me hear if you (or anyone else) found a solution for Fedora :)

@noelgarber I just published wakepy 0.6.0 and it has two options of using DBus + inhibit method. I suppose this will fix also your problems on Fedora!

I haven't checked if this is fixed yet but added 0.8.0 milestone, as Fedora (Workstation 36) uses GNOME 42, and support for GNOME using org.gnome.SessionManager (D-Bus) is in the list of changes for 0.8.0.

Just installed Fedora 36 for testing purposes. Running with the latest dev version:
In [1]: import wakepy

In [2]: wakepy.__version__
Out[2]: '0.8.0dev'

In [3]: from wakepy import keep

In [4]: import time
   ...: with keep.running() as m:
   ...:     print(m.active)
   ...:     print(m.activation_result.active_method)
   ...:     time.sleep(2000)

Confirming that the org.gnome.SessionManager based keep.running & keep.presenting methods and the org.freedesktop.ScreenSaver based keep.presenting method work well on Fedora 36 with GNOME 42.0, using the latest 0.8.0dev.


pusher upgrade 8.3.0

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/27167
PROPOSAL: https://github.com/Expensify/App/issues/27167#issuecomment-1714698062
Tests

Open any on user A and User B
User A send message User B must receive the message

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[x] 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 the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[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 grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is 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] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[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 code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[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 the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[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

https://github.com/Expensify/App/assets/16595846/e49d3dde-cbc1-46a9-acd7-fee1210c2454

Mobile Web - Chrome

https://github.com/Expensify/App/assets/16595846/7bf5a7d3-c163-4d49-bc13-a447aa956c57

Mobile Web - Safari

https://github.com/Expensify/App/assets/16595846/1a97504f-9683-4069-9aa1-1389b93f9922

Desktop

https://github.com/Expensify/App/assets/16595846/1f8f682e-b2ce-4c21-b439-40d41ef1eafb

iOS

https://github.com/Expensify/App/assets/16595846/a671d62f-269b-4865-81fc-68d98045f18f

Android

https://github.com/Expensify/App/assets/16595846/97c178e4-9f75-413a-ba3c-f58e487f8a90

@0xmiroslav could you help me understand here because
the same step is passing in the Lint code/ jest unit but its fails in the verify podfile
this is stepname Expensify/App/.github/actions/composite/setupNode@main

@0xmiroslav
I just run locally npm i and push the package-lock.json its throwing the error

tests pass locally. please pull main and see same issue happens

just now checked the main. the issue was installing npm ci in the Expensify/App/.github/actions/composite/setupNode@main all the checks fail is due this step only

Seems like this PR also has issue

yes @0xmiroslav this is only happen on verify podfille but same step is passing the other test case.
Ah, why did you revert pushing package-lock.json?
looks like package-lock json failing other test case

We should push package-lock.json as you see it fails lint

ya i agree we need that for npm CI execution.

@0xmiroslav could able check this on you local because after run npm i  those are missing some root
ex: @tensorflow/tfjs-backend-webgl before run npm i 12 places is there after run npm i only 8 places is there
after npm i

@0xmiroslav this is my local system npm install problem.. wait I will fix this soon.

@0xmiroslav sorry for the delay all done now.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/luacmartins in version: 1.3.71-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/thienlnam in version: 1.3.71-12 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
failure ❌

🕸 web 🕸
success ✅


python310Packages.python-barcode: 0.13.1 -> 0.14.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python310Packages.python-barcode is: "Create standard barcodes with Python"
meta.homepage for python310Packages.python-barcode is: "https://github.com/WhyNotHugo/python-barcode"
meta.changelog for python310Packages.python-barcode is: ""
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact

Checks done (click to expand)

built on NixOS
Warning: a test defined in passthru.tests did not pass
found 0.14.0 with grep in /nix/store/02zb3azkf4gb5jp1sv3knpn8vwn97dhp-python3.10-python-barcode-0.14.0
found 0.14.0 in filename of file in /nix/store/02zb3azkf4gb5jp1sv3knpn8vwn97dhp-python3.10-python-barcode-0.14.0

Rebuild report (if merged into master) (click to expand)

4 total rebuild path(s)

2 package rebuild(s)

2 x86_64-linux rebuild(s)
2 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
python310Packages.python-barcode
python39Packages.python-barcode

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/02zb3azkf4gb5jp1sv3knpn8vwn97dhp-python3.10-python-barcode-0.14.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python310Packages.python-barcode https://github.com/r-ryantm/nixpkgs/archive/ae2e0dc9054d260ffb4561c4a2fe6488e5c7b310.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/02zb3azkf4gb5jp1sv3knpn8vwn97dhp-python3.10-python-barcode-0.14.0
ls -la /nix/store/02zb3azkf4gb5jp1sv3knpn8vwn97dhp-python3.10-python-barcode-0.14.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

2 packages built:

python310Packages.python-barcode
python39Packages.python-barcode

Maintainer pings
cc @wolfangaukang for testing.

This package should use passthru.extras-require.

Can you please explain? This is the first time I have seen about extras-require, so I have no idea of what needs to be applied.

You should get rid of the argument imagesSupport and instead specify
passthru.extras-require = {
  images = [ pillow ];
};

See https://nixos.org/manual/nixpkgs/unstable/#idm140737316522976.

Understood. Thank you very much, this is indeed a cleaner way. Created #173911.


Introducing ApprovalTask in pipeline, the pipeline cannot find the task

Introducing ApprovalTask in pipeline, the pipeline cannot find the task
Pipeline cicd/flask-demo-dev-flow can't be Run; it contains Tasks that don't exist: Couldn't retrieve Task "approval": tasks.tekton.dev "approval" not found
k8s version: v1.26.15
tekton version v0.40.0
  - name: wait
    taskRef:
      apiVersion: openshift-pipelines.org/v1alpha1
      kind: ApprovalTask
      name: approval
    params:
      - name: approvers
        value:
          - foo
          - bar
          - tekton
      - name: numberOfApprovalsRequired
        value: 2
      - name: description
        value: Approval Task Rocks!!!

You need to use Tekton Pipelines v0.43.0 and onwards versions to get this working
Because once you refer an approval Task in the pipeline, then when it reaches approvalTask it creates a customRun and support for that is added in v0.43.0 https://github.com/tektoncd/pipeline/releases/tag/v0.43.0

And regarding Kubernetes version, it will work fine with 1.26 but if you want to use the cli then in that case you'll have to use k8s 1.28 and onwards


Can't pass eager tensors to Model.train_on_batch

System information

Have I written custom code (as opposed to using a stock example script provided in TensorFlow):
No

OS Platform and Distribution (e.g., Linux Ubuntu 16.04):
OSX, and Fedora 28

TensorFlow installed from (source or binary):
Binary

TensorFlow version (use command below):
1.8.0

Python version:
3.6

Describe the problem
Describe the problem clearly here. Be sure to convey here why it's a bug in TensorFlow or a feature request.
I can't pass eager tensors to Model.train_on_batch. I had to pass numpy arrays instead.

Thank you for your post. We noticed you have not filled out the following field in the issue template. Could you update them if they are relevant in your case, or leave them as N/A? Thanks.
Bazel version
CUDA/cuDNN version
GPU model and memory
Exact command to reproduce

It has been 15 days with no activity and the awaiting response label was assigned. Is this still an issue?

It has been 37 days with no activity and the awaiting response label was assigned. Is this still an issue?

We are closing this issue for now due to lack of activity. Please comment if this is still an issue for you. Thanks!


Separate components build for faster results

Few build / dev requests that would be nice to haves.
Would be great if we could run the components generation command only on the folder you are working within for faster feedback loops. Then you can run full list at end to make sure the navigation is updated globally. Also would be nice to be able to generate the components index page without regenerating all the components pages too.

I think this is covered by the changes I made to the build process. Closing.


sum, unexpand: fix output of about string

This PR changes the output of the about string from
Checksum and count the blocks in a file.
                        With no FILE, or when  FILE is -, read standard input.

to
Checksum and count the blocks in a file.

With no FILE, or when FILE is -, read standard input.

do you want me to wait for a bit longer? :)

No, unexpand is the only other tool I found with the same issue.


Fix issue where scrolling to item center would overflow on top

This PR fixes an issue where a tree scroll could overflow if the scrolling is centered to the item and that the calculation to take into account the items' final height is negative. As the y_offset subtracts the final height of the item, it results in a positive scroll position, when it should be really 0.
Fix #93899
Supersedes #93918

Thanks!


Dependencies with "Obsolete" flows should not count!!!

Describe the bug
An item with a dependency to an obsolete flow is counted as a dependency with a active flow.
To Reproduce
Create a custom label, use it in a flow.
Create a new version of the flow without the custom label.
The custom label will be shown as "used" (which is true) but by an obsolete flow!
In this situation a dependency with an obsolete flow should not be considered as a valid "used by" dependency.
This impacts:

the score of the item being used
the count in the "used by" columns (in this example the Used in flows")
the graphical view of the dependency should use a different colo for obsolete flow maybe...

FInally: the flow in the dependencies are shown in another color when their status is not "Active" (so draft, obsolete, etc..)

Need to fix the id part. you see a 0 in the table!!

Back on business!

+1 if the items are used in obsolete flows

Need to add Custom Labels + Translation for this new columns
And add also the help text because a new rule is now here!

VFP:

ApexComponent:

Recompilation_Alert: You have % Apex class(es) that need(s) to be recompiled.
 Please make sure you click on the plug button in this page to ask for a recompilation of this (these) Apex class(es).
 If some classes still need recompilation after this, you need to check them for sure.

Coverage_NoCov_Alert: You have % Apex class(es) with NO code coverage AT ALL.

Coverage_LowCov_Alert: You have % Apex class(es) with a code coverage < 85%.

Coverage_Alert: Please make sure you click on the like button in this page to go to the setup menu and run all apex unit tests in this org.
 If some classes still need code coverage after this, you need to check them for sure.

Automation:

NoDirectAction: No direct action!

Direct action: Direct action: % (%)

Future action: Future action: % (%)

Batches:

Message: Message
User: User
Recompile: Recompile!
Recompilation_Alert: see above

Custom Fields:

UsedInInactiveFlow: Used in Inactive Flow

Custom Labels:

Label?: Master Label (maybe change the label itself to use it more generally)
IsProtected: IsProtected (is it really useful?)
Language: Language
UsedInInactiveFlow: see above

Home:

Check all labels in this page...

Object:

NoObject_Warning: There is no Object corresponding to your request! Please change either the package or the type.
Package: %
Type: %

Fields in the first section (object level information): such as API Name, Singular Label, ..., External Sharing
UsedInInactiveFlow: see above
Tooltip: Tooltip
Length: Length
Unique: Unique
RelationshipName: Relationship Name
Master: Master
RecordTypeId: Record Type Id
Id: Id

Profile:

Policy: Policy
and others like User pwd expire in, etc..

Done for:

ApexComponent
Batches
Custom Fields
Custom Labels

Todo:

Automation
Profile
Object
Home

Done for:

ApexComponent
Batches
Custom Fields
Custom Labels

Todo:

Automation
Profile
Object
Home


[#6351] ui: retain denoise strength and opacity when changing image

Summary
This change fixes the issue where changing the image used for image to image resets the denoising strength and opacity to default values of 0.75 and 1 respectively.
Checklist

[x] The PR has a short but descriptive title, suitable for a changelog
[ ] Tests added / updated (if applicable)
[ ] Documentation added / updated (if applicable)

It appears prettier is unhappy. Could you please run pnpm fix to format all files and push the changes? Ty


iterate API

Use the Iterator trait instead of the model with the channel.
Also extract code from verify example to something like par_iter( Fn(BlockExtra) -> Vec<T>, Fn(T)  ) with the second function running in parallel

You might know that already, but just to make sure: one can always turn an receiving a end of a channel into an iterator with .into_iter()
I was working on blocks_iterator-like API where everything can become a clean iterator pipeline:
node_client.recv_blocks().handle_prevouts().write_db();

so I can easily use https://docs.rs/pariter/0.5.1/pariter/ .
But I stumbled on the fact that error handling here is very inconvenient. Then I started playing with https://docs.rs/fallible-iterator/0.2.0/fallible_iterator/ to see if it helps, and then I ran out of free time and stamina.
Just sharing my discoveries.

Thanks for sharing.

You might know that already, but just to make sure: one can always turn an receiving a end of a channel into an iterator with .into_iter()

I discovered this like 2 days ago ahahah, and decided to use it to remove the ugly BATCH in my verify example and subsequently move the parallelization logic inside the API.
I used rayon and I didn't know about pariter and fallible_iterator and come up with the following par_iter API, probably not clean iterator pipeline but I think it does the job. Happy to receive feedback.

implemented in https://github.com/RCasatta/blocks_iterator/pull/45

implemented in https://github.com/RCasatta/blocks_iterator/pull/45

It works, I guess, though it looks very custom-made and not very idiomatically composable.
The PREPROC could be a .flat_map(...) and TASK could be a .parallel_map(...) if I'm reading it right, so they kind of would be easier to work with if separated, IMO.
The explicit STATE seems unnecessary because each TASK (basically any closure) can already borrow some state internally, so passing STATE explicitily just blows the API surface, AFAICT.
All these 'static + Send + Sync are constraining the calling code, making certain valid usages impossible (like using borrowed variables in these closures) which 99% doesn't matter, but this 1% when it does, the user will complain.
But then, if you start aiming at maximum expressivness and general purpose idomaticness, you'll have to deal with stuff like that, and it's not like I write code like that by heart. There is a lot of grinding, figuring these lifetimes and generics.
I also don't like the unwraps, but iterators returning Result items are not very convenieient to work with, so that leads to falliable_iterator.
So I'm just poining out "in a perfect case" things could be better, but I bailed on implementing these myself, so by no means feel like I am complaining at your code. :D

thanks for your feedback, I realized par_iter makes no sense


Flekschas/split get validate viewconfig api

Description

What was changed in this pull request?

Removed viewconf validation from hgApi.getViewConfig() and hgApi.setViewConfig() and added a new function:
const isValidViewConfig = hgApi.validateViewConfig(viewConfig, { verbose = false } = {});

Why is it necessary?

Fixes #952
Checklist

[x] Set proper GitHub labels (e.g. v1.6+, ignore if you don't know)
[ ] Unit tests added or updated
[x] Documentation added or updated
[ ] Example(s) added or updated
[ ] Update schema.json if there are changes to the viewconf JSON structure format
[ ] Screenshot for visual changes (e.g. new tracks or UI changes)
[x] Updated CHANGELOG.md

Build fails but it looks like it's just a timeout. Probably just needs to be restarted.


new branching model page

Added a new branching model page based on the new use-cases defined.
This is in addition to the reccomondation page we currently have and might replace completely.
We still need to add code snippets tto the relavnt sections.

General note - I maybe missed some whitespace issues - there are a couple of places that use two spaces instead of one.

Thank you! Made the changes to the blog post as well.


Adding support for emojis (surrogate pairs)

Adds support for character code range<PHONE_NUMBER>99 (emojis). Extracts the character's surrogate pairs and returns them so that emojis are rendered.
Please feel free to suggest any changes -- I'm not 100% confident about all of the cases and how this library works, but this adds support for emojis for me.
For example, it takes 😂 😂 and finds the surrogates 55357 and 56834.

Coverage decreased (-1.08%) to 93.529% when pulling e03211c2d5afb78c693e6db48c1d496f56118589 on danleveille:patch-1 into 3a2cd397697c872325f526bb422bdee74f089cda on mdevils:master.

Coverage decreased (-1.08%) to 93.529% when pulling e03211c2d5afb78c693e6db48c1d496f56118589 on danleveille:patch-1 into 3a2cd397697c872325f526bb422bdee74f089cda on mdevils:master.

This is good

I'm honestly not familiar with coveralls so if anyone is able to confirm if this change is okay or if it needs revisions, that would be great! As I mentioned, it works for me!

Coverage decreased (-1.08%) to 93.529% when pulling e03211c2d5afb78c693e6db48c1d496f56118589 on danleveille:patch-1 into 3a2cd397697c872325f526bb422bdee74f089cda on mdevils:master.

Coverage decreased (-1.08%) to 93.529% when pulling e03211c2d5afb78c693e6db48c1d496f56118589 on danleveille:patch-1 into 3a2cd397697c872325f526bb422bdee74f089cda on mdevils:master.

Any update on this?

Hello @danleveille. Sorry for a huge delay in the response.
Where did you get these ranges from? 128000 and 128599. I can see emojis beyond 128599 char point if I'm not wrong.

@mdevils This was four years ago so there are newer emojis.
It looks like 129750 (teapot) is the highest emoji as of the newest 2020 set. But maybe someone more familiar with unicode can confirm?
If we add a few hundred to the number, would that be a safe way of making it more future-proof?

@danleveille I wanted to say that just after 4 years this issue was fixed and version 1.4.0 was released 😆


Readme and description mention closed issue

The readme says that this library will become deprecated once https://github.com/haskell/cabal/issues/2327 is closed, and it's closed but this library is still afaict necessary. The description also references that issue.

I'm in process of removing of cabal v1-doctest as it simply doesn't work (one can argue, never worked). There aren't issue for creating v2-doctest.
Feel free to make a PR clarifying that in README.


app.dependency_overrides[get_db] = override_get_db is not working

The problem
Hi, I have followed the tutorials on the fastapi website where I have found everything easy and clear. However, there is one thing I cannot make work and it looks like a lot of people are having this issue. Still, I have tried all the solutions there are on the internet and could not make it work.
I'm trying to run pytest in my fastapi app but even if I follow the tutorial line by line it doesn't work. The fake database gets created but still, the real one is being used by the tests (which is a huge problem).
The point is if I set a breakpoint inside of the function override_get_db, it never gets there, it is being totally ignored, the rest of the lines are reached by the debugger, so I guess this is the problem. Can anyone who has had the same issue and solved it help, please?
This is my code:
import json

from fastapi.testclient import TestClient
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from starlette import status

from database import get_db, Base
from main import app

TEST_DATABASE_URL = "sqlite:///./test.db"
test_engine = create_engine(
   TEST_DATABASE_URL, connect_args={"check_same_thread": False}
)
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=test_engine)
Base.metadata.create_all(bind=test_engine)

def override_get_db():
     try:
         db = TestingSessionLocal()
         yield db
     finally:
         db.close()

app.dependency_overrides[get_db] = override_get_db
client = TestClient(app)

def test_get_course():
    response = client.post(
        app.url_path_for('create_course'),
        json={"name": "q1", "level": "q1", "description": "desc", "background_color": "bg"},
    )

    response_data = json.loads(response.content)

    response = client.get(app.url_path_for('get_course', **{"course_id": 1}))
    response_data = json.loads(response.content)
    assert response.status_code == status.HTTP_200_OK
    print(response_data)
    #assert response.json() == {'FastApi': 'UOE PRO'}

I'm using Python 3.8.3 and these are the versions I have installed in my virtual environment:
fastapi==0.65.1
SQLAlchemy==1.4.15
psycopg2-binary==2.8.6
uvicorn==0.13.4
pydantic==1.8.2
starlette==0.14.2
passlib==1.7.4
bcrypt==3.2.0
python-jose==3.2.0
pytest==6.2.4
requests==2.25.1

Thank you so much!

Same problem here... just copied the example from the docs, and it does not work. The problem of the docs is that they are so synthetic, no real problem are described more then 'test your hello world made in one file'

I'm also having this problem

@pausanchezv In order to get help with your issue, you might want to follow some best practices and be precise and helpful to your volunteers with your request. Some hopefully helpful remarks on your post:
You claim to follow the tutorial:

even if I follow the tutorial line by line it doesn't work

First of all, you might be more specific about your sources (these lines you're talking about in the quote), e.g. by providing one or more relevant links to the tutorial pages you're referring to, let's say:

Setting up the SQL databases example
Adding a test using dependency_overrides

People might be much more eager to help out if you reduce the trouble it takes to figure out what page you're actually on.
Secondly, your claim doesn't seem to be true at all - the sample code you provided has been modified in comparison to the original example:

you have additional imports such as from starlette import status
some imports appear to be modified: you're importing override_get_db from .database whereas it comes from .main in the original example (so your version should not run at all if we assume that the other files weren't touched)
some names are changed
the test code is changed

Even though most of those changes might be not related to your issue, some might. The obvious modifications you've done to the test file at least provoke questions concerning further changes that you might have done to other files that are part of the tutorial example - we really can't tell!
As for me, I braindeadly copied the tutorial example, ran pytest (with an empty sql_app.db), the test passed, and the record created during the test session was there in test.db.
I'd recommend to you to start the same way without your modifications and try again.
Or, alternatively, provide us with some more information about changes you made and the commands you're using to execute your tests (the tutorial does not explicitly provide these commands, so perhaps the mistake can be found there?).
Hope this helps!
BTW: For syntax highlighting, add a language declaration to your code snippet, like
```python
import this
```

which will be rendered as
import this

@oligond, just to verify the above, I went and copied each of the files given at the bottom of the Setting up the SQL databases example page, and then created the tests subdirectory according to the format outlined in Adding a test using dependency_overrides - so each file is identical to those given in the tutorial - and I still have the posted issue, wherein the production database is being initialised alongside the test database. For reference, all I did was copy these files verbatim, navigate to /sql_app/ and run pytest, so I haven't attached the code itself.
Is this the intended behaviour? I would have thought that the production database should not be touched, much less initialised, if the dependency_overrides was operating as intended.
In fairness, it appears that only the test database is being written to, but it is a bit frustrating that the production database is being created for each testing session.

@Ecaloota Thanks for specifying the issue, I had really misunderstood the original post.
Now I get what your question actually is about 😉
The "production/real" database is created when running the test just because of the simple/naive setup of the example.
So what's going on?

the module containing the test is importing stuff from .main
this means that all top level code in .main is executed when running the test code
the top level code in .main also creates the database as demonstrated here:
https://fastapi.tiangolo.com/tutorial/sql-databases/#create-the-database-tables

How to fix that?
Prevent the database creation code from being executed on module import!
As a quick and dirty way to achieve this, let's wrap it into a function. We're only interested in getting the test to run as we expect, so we don't have to care too much. You could as well just comment it out, if all you want is that the example behaves well for your test.
A real life app wouldn't usually just create its database on startup, a more common way would be to define some task (together with other tasks relating to database housekeeping) that you run manually or programmatically as required.
So that's our modified main.py:
from typing import List

from fastapi import Depends, FastAPI, HTTPException
from sqlalchemy.orm import Session

from . import crud, models, schemas
from .database import engine, SessionLocal

app = FastAPI()

# --- begin modified: won't be executed on module import ---
def create_db():
    models.Base.metadata.create_all(bind=engine)
# --- end modified ---

# Dependency
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        db.close()

@app.post("/users/", response_model=schemas.User)
def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
    db_user = crud.get_user_by_email(db, email=user.email)
    if db_user:
        raise HTTPException(status_code=400, detail="Email already registered")
    return crud.create_user(db=db, user=user)

@app.get("/users/", response_model=List[schemas.User])
def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
    users = crud.get_users(db, skip=skip, limit=limit)
    return users

@app.get("/users/{user_id}", response_model=schemas.User)
def read_user(user_id: int, db: Session = Depends(get_db)):
    db_user = crud.get_user(db, user_id=user_id)
    if db_user is None:
        raise HTTPException(status_code=404, detail="User not found")
    return db_user

@app.post("/users/{user_id}/items/", response_model=schemas.Item)
def create_item_for_user(
    user_id: int, item: schemas.ItemCreate, db: Session = Depends(get_db)
):
    return crud.create_user_item(db=db, item=item, user_id=user_id)

@app.get("/items/", response_model=List[schemas.Item])
def read_items(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
    items = crud.get_items(db, skip=skip, limit=limit)
    return items

With the modification in place, delete the sql_app.db and run pytest again. The file shouldn't be recreated anymore.

@oligond Thank you for the above, this all makes sense and I've gotten it to work. Thanks again!

@pausanchezv In order to get help with your issue, you might want to follow some best practices and be precise and helpful to your volunteers with your request. Some hopefully helpful remarks on your post:
You claim to follow the tutorial:

even if I follow the tutorial line by line it doesn't work

First of all, you might be more specific about your sources (these lines you're talking about in the quote), e.g. by providing one or more relevant links to the tutorial pages you're referring to, let's say:

Setting up the SQL databases example
Adding a test using dependency_overrides

People might be much more eager to help out if you reduce the trouble it takes to figure out what page you're actually on.
Secondly, your claim doesn't seem to be true at all - the sample code you provided has been modified in comparison to the original example:

you have additional imports such as from starlette import status
some imports appear to be modified: you're importing get_db from .database whereas it comes from .main in the original example (so your version should not run at all if we assume that the other files weren't touched)
some names are changed
the test code is changed

Even though most of those changes might be not related to your issue, some might. The obvious modifications you've done to the test file at least provoke questions concerning further changes that you might have done to other files that are part of the tutorial example - we really can't tell!
As for me, I braindeadly copied the tutorial example, ran pytest (with an empty sql_app.db), the test passed, and the record created during the test session was there in test.db. In one word: all as expected, couldn't reproduce your issue.
I'd recommend to you to start the same way without your modifications and try again.
Or, alternatively, provide us with some more information about changes you made and the commands you're using to execute your tests (the tutorial does not explicitly provide these commands, so perhaps the mistake can be found there?).
Hope this helps!
BTW: For syntax highlighting, add a language declaration to your code snippet, like
```python
import this

which will be rendered as

```python
import this

I found a workaroud like three months ago, but I'll take into account how to comment an issue in the future. Thanks.


fix indent video block

issue https://github.com/kubernetes/website/issues/24022
remove br for fix indent
en PR
/area web-development

before
https://kubernetes.io/id/#video
after (review page)
https://deploy-preview-24050--kubernetes-io-master-staging.netlify.app/id/#video
/assign @irvifa

tested locally, make sense +1

/lgtm

Thank you 🎉
/lgtm
/approve


WIP: Introduce meaningful sub types to BType category in suggestions

Purpose

Introduce meaningful sub types to BType category in suggestions

Fixes #13621
Approach

Use bSymbol.getKind() to derive the sub type.

Check List

[x] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@184b01d). Click here to learn what that means.
The diff coverage is n/a.

@@            Coverage Diff            @@
##             master   #14973   +/-   ##
=========================================
  Coverage          ?   68.85%
=========================================
  Files             ?        5
  Lines             ?      122
  Branches          ?       21
=========================================
  Hits              ?       84
  Misses            ?       38
  Partials          ?        0

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 184b01d...fa4741b. Read the comment docs.


Href attribute not being rendered correctly

When parsing HTML inside my Markdown string, I've been coming across some issues. Most noticeably any href attributes of those HTML bits.
Schema

Is rendered as
Schema

I think you mean that
Schema
is rendered as
Schema

I don't seem to be able to reproduce it. Do you reproduce it in the demo?

In the demo it looks ok. @jackmcdade should know more details about how he processes the input before feeding it to the parser.

Ah i see what it is. We're parsing Markdown before our template language does variable replacement, so it's selectively encoding/stripping/altering the {{ curly }} braces of certain attributes.

@jackmcdade
Do you think that this is related to an issue with Parsedown?

Yeah definitely. We just upgraded Parsedown and the issue popped up. Rolling back fixes it. As does using other Markdown parsers.

Can you help me reproduce it?

Sure thing, just drop this in the demo:
A URL!

I did that. Parsedown seems to produce identical output as Markdown PHP. Am I missing something?

I'm not quite sure what to say except that in Statamic that parser doesn't break anything, and Parsedown does. I can set up a sandbox for you if that might help?

That might help, but before that, could you figure out which is the exact version that introduces the issue?

I’ll see what I can do.
- Jack
On January 15, 2015 at 5:30:27 PM, Emanuil Rusev<EMAIL_ADDRESS>wrote:
That might help, but before that, could you figure out which is the exact version that introduces the issue?
—
Reply to this email directly or view it on GitHub.

@jackmcdade
Did you get a chance to look into it?

I'm not sure if this is the same issue, but I have recently noticed that there is a problem when you use curly brackets in a markdown link, it doesn't work. For example:
[Some Link]({{url}})

Renders out of Markdown as:
Some Link

As expected.    The problem with that appears to be the space before the opening parens in the first negated set.  If you remove that so the resulting regex is:
'/^[(]((?:[^(]|[(][^ )]+[)])+)(?:[ ]+("[^"]+"|\'[^\']+\'))?[)]/'

This now works.  However, this is a pretty complex regex and i'm not sure the implications of removing this space for other tags.  Perhaps @erusev has some insights as this was changed pretty heavily between 1.14 and current.

the indentifyLink() fails on the regex

This is expected. The regex expects a valid URL.

BTW, I have no issue with curly brackets in HTML links themselves, Parsedown just ignores them and it works fine.

Same here. I'm unable to reproduce the issue. It'd be great if @jackmcdade could help us with that.

FWIW, I got around this in Grav by using on overriden inlineLink() method, detecting Twig syntax in the URL, setting the link to a simple safe URL: /, processing normally, then setting the href back to the original Twig code:
    protected function inlineLink($excerpt)
    {
        // do some trickery to get around Parsedown requirement for valid URL if its Twig in there
        if (preg_match('/\!*\[(?:.*)\]\(([{{|{%|{#].*[#}|%}|}}])\)/', $excerpt['text'], $matches)) {
            $excerpt['text'] = str_replace($matches[1], '/', $excerpt['text']);
            $excerpt = parent::inlineLink($excerpt);
            $excerpt['element']['attributes']['href'] = $matches[1];
            $excerpt['extent'] = $excerpt['extent'] + strlen($matches[1]) - 1;
        } else {
            $excerpt = parent::inlineLink($excerpt);
        }
    return $excerpt;
    }

@jackmcdade
Is this Parsedown or Parsedown Extra?

I'm unable to reproduce it, but I can tell you we're using Parsedown Extra.

Okay, I can reproduce it. Even in the demo. Parsedown Extra only.

Test

Outputs:

Test

But, without the
 wrapper:
Test
Outputs:

Test

However, I think it's correct that you are encoding those characters. Is there an option to disable it?

Same here. Twig tag brackets are encoded if they appear in a href attribute and the link tag is enclosed in div tag for example (using Parsedown extra).
This works:
 {{ page.title }}

This doesn't:

 {{ page.title }}

and results in

 My Pagetitle

I did some further investigation on this. The issue is caused by PHP's DOMDocument class urlencoding the src and href attributes in ParsdownExtra's processTag method.
A similar issue is reported here:
http://stackoverflow.com/questions/20102346/avoid-percent-encoding-href-attributes-when-using-phps-domdocument
One solution would be to loop through all src and href attributes and urldecode them to reverse the encoding. Another could be to rename the attribute to _src and _href, do the DOM processing and rename them back to src and href.

Since it didn't appear to be possible to reproduce this issue, I'm going to close this one – please reopen if you can reproduce this with the latest version though.

I've just come across this same issue while working in grav. Came here hoping for a solution.
code:

result:
<a data-test="/user/pages/05.test/image.jpg" href="%7B%7B%20image.url()%20%7D%7D"<EMAIL_ADDRESS>2500w<EMAIL_ADDRESS>3500w<EMAIL_ADDRESS>1000w<EMAIL_ADDRESS>1500w<EMAIL_ADDRESS>5664w, /user/pages/05.test/image.jpg 640w" data-sizes="100vw, (min-width: 576px) 510px, (min-width: 768px) 460px, (min-width: 992px), 465px, (min-width: 1200px) 555">

href and src tags broke. Disabling Parsedown Extra fixes it.

Yah this is an upstream problem with Markdown Extra library, not much we can do.  We're probably going to remove Markdown Extra in Grav 2.0 unless they do some significant improvements to it.

So as @hwmaier has pointed out, the main issue here appears to be caused by ParsedownExtra's use of PHP's DOMDocument. (I think there is a seperate issue @rhukster has experienced related to how many spaces are allowed in a markdown link – Parsedown is doing the correct thing here per CommonMark, and so I think that the correct approach to allowing spaces within curly brackets will boil down to being permitted by user added behaviour).
We use DOMDocument in ParsedownExtra to parse HTML tags to detect the markdown=1 attributes that enable markdown processing within HTML tags. Personally, I'm not a fan of ParsedownExtra's method of enabling markdown within HTML tags: from the implementor's point of view, it is problematic because it requires parsing HTML in addition to the markdown syntax; from the writer's point of view, it's (IMO) not a very natural construction to enable a markdown feature with HTML attribute syntax. Since this approach require's parsing HTML, it leaves a lot of the output to the mercy of the HTML parser we use and so subtleties like this will end up as upstream bugs to ParsedownExtra, as this one is (short of swapping the HTML parser dependency we use).
CommonMark's method of achieving markdown content within HTML is both simpler to use (IMO) and also to implement (see also /cc: @PhrozenByte).
Given more modular "agility" in the next Parsedown release, I'd expect that the additional features that ParsedownExtra contains could be readily imported (or enabled) within Parsedown. There are also significant improvements that have already been made to Parsedown's HTML handling, which (as far as I'm aware) should bring it up to being CommonMark compliant in this regard (see changes). These aren't yet released, but will definitely make it into the next version.
With all that considered, I'd envision it being possible (at the most drastic) to move ParsedownExtra's additions into the Parsedown repo as a set of modular features (that'll be by default off). If this happened I'd expect to just dump the markdown=1 feature. For something less drastic, I'd expect that the user would be able to choose between handling approaches to suit what works best syntactically for them (with the CommonMark approach chosen by default).
As a TL;DR: this is unlikely to occur in 2.0 since we'll have the opportunity to drop a dependency within ParsedownExtra, if we don't drop the dependency it might still occur but only if the markdown=1 feature is specifically enabled.
These are of course just ideas so far though (representing my current intent, but not necessarily a guarantee of what the next version will look like).

To fix the problen you can process twig fist:
https://learn.getgrav.org/15/content/headers#process-twig-first


[WIP] [ENH] bids provenance proposal

Adding text from the Bids-provenance draft
@cmaumet and I working on this

@cmaumet the linkchecker is returning some errors
I thought you have more experience with this kind of CI tool
Can you tell what this is about ? I don't think it's a big deal

just referencing the related issues here

https://github.com/bids-standard/bids-specification/issues/368
https://github.com/bids-standard/bids-specification/issues/369
https://github.com/bids-standard/bids-specification/issues/313 ?

and Pull Requests

https://github.com/bids-standard/bids-specification/pull/440

@sappelhoff the linkchecker you are using seems to be dead : when I look into circle-ci logs I find a pointer to https://github.com/wummel/linkchecker/issues
Going into the issues you can find this one, which indicates a new repo has been created.
Are you sure the linkchecker is up-to-date ?

Are you sure the linkchecker is up-to-date ?

I remember that it was a bit of a pain to get it in back then in https://github.com/bids-standard/bids-specification/pull/293
but we are also not using the wummel/linkchecker directly, I think. See:https://github.com/yarikoptic/linkchecker
Hopefully @yarikoptic can help you. He implemented the linkchecker for our repo.

yes, unfortunately we had to resort to my patched version.
this particular problem is that the original .html indeed doesn't have that anchor:

$> wget -O jsonld.html 'https://w3c.github.io/json-ld-syntax/#named-graphs'
--2020-04-06 13:04:25--  https://w3c.github.io/json-ld-syntax/
Resolving w3c.github.io (w3c.github.io)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Connecting to w3c.github.io (w3c.github.io)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 571708 (558K) [text/html]
Saving to: ‘jsonld.html’

jsonld.html                  100%[===========================================>] 558.31K  --.-KB/s    in 0.1s

2020-04-06 13:04:25 (4.12 MB/s) - ‘jsonld.html’ saved [571708/571708]

$> grep named-graphs jsonld.html

,

        This keyword is described in .

      See  for more information,

See  for other uses of indexing in JSON-LD.

    contained within the same map, a feature discussed further in .

       for more details.

      See  for further discussion on
      See  for further discussion on

See .

$> grep named-graphs jsonld.html | grep -v 'href="#named-gr'

so either it is some java-script magic or some other goodness which would not work for linkchecker (since it has no JS runtime support AFAIK).  Thus either some more conventional permalink could be found, or disable linkchecker altogether

FWIW

yes, unfortunately we had to resort to my patched version.
this particular problem is that the original .html indeed doesn't have that anchor:

$> wget -O jsonld.html 'https://w3c.github.io/json-ld-syntax/#named-graphs'
--2020-04-06 13:04:25--  https://w3c.github.io/json-ld-syntax/
Resolving w3c.github.io (w3c.github.io)... <IP_ADDRESS>, <IP_ADDRESS>, <IP_ADDRESS>, ...
Connecting to w3c.github.io (w3c.github.io)|<IP_ADDRESS>|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 571708 (558K) [text/html]
Saving to: ‘jsonld.html’

jsonld.html                  100%[===========================================>] 558.31K  --.-KB/s    in 0.1s

2020-04-06 13:04:25 (4.12 MB/s) - ‘jsonld.html’ saved [571708/571708]

$> grep named-graphs jsonld.html

,

        This keyword is described in .

      See  for more information,

See  for other uses of indexing in JSON-LD.

    contained within the same map, a feature discussed further in .

       for more details.

      See  for further discussion on
      See  for further discussion on

See .

$> grep named-graphs jsonld.html | grep -v 'href="#named-gr'

so either it is some java-script magic or some other goodness which would not work for linkchecker (since it has no JS runtime support AFAIK). Thus either some more conventional permalink could be found, or disable linkchecker altogether

PS FWIW -- asked the origin: https://github.com/w3c/json-ld-syntax/issues/343

pushed 4a06044491720f6c3703b1a3fe7c62d9a3d23c88 which brings "correct" URL for named-graphs back.

@sappelhoff: Thanks for your review! We'll look into this as soon as possible. Do you have more info on the process to make this an official BEP? Thank you!

@sappelhoff: Thanks for your review! We'll look into this as soon as possible. Do you have more info on the process to make this an official BEP? Thank you!

@cmaumet @remiadon  usually the process goes a bit like this:
BEP process

open an issue on GitHub announcing your intent and goals (with reasoning, why it's necessary)
get people on board, decide for BEP leads (i.e., moderators)
get to work on a Google Doc, engaging with the community
towards finalizing the BEP, convert from Google Doc to markdown and open a pull request to the specification
implement necessary changes for the bids-validator and potentially add an example on bids-examples
merge everything and celebrate :slightly_smiling_face:

At some point (between step 2 and 3), we make the BEP official by adding a number (e.g. BEP006 ...) and making an entry on our list of active BEPs
In the past, this step of "making a BEP official" was done by @chrisgorgo / a BIDS maintainer. But now we have our @bids-standard/steering group, which will review a BEP and make it official (or request changes). See the "Draft BEP review" point in the BIDS governance.
To me it seems like you are already at the "final" stage of your BEP (at least you are converting to markdown and opening a PR), and the issue is that your BEP has not yet been made official? Perhaps it'd be good if you get the BEP (perhaps even this PR) into a presentable state for the @bids-standard/steering group and then ask for an official review.
This is also interesting for two more BEPs that will soon want to get an "official" status.

NIRS #438

@rob-luke @lpollonini et al.

MOTION #443

@sjeung @juliuswelzel @helenacockx et al.

See also:

BEP Lead Guidelines

Hi @sappelhoff Thanks a lot!

To me it seems like you are already at the "final" stage of your BEP (at least you are converting to markdown and opening a PR), and the issue is that your BEP has not yet been made official?

Although we did make a pull request, I would not say that our BEP is at the final stage yet. We would like to engage with the community, get feedback and improve it first.

At some point (between step 2 and 3), we make the BEP official by adding a number (e.g. BEP006 ...) and making an entry on our list of active BEPs
In the past, this step of "making a BEP official" was done by @chrisgorgo / a BIDS maintainer. But now we have our @bids-standard/steering group, which will review a BEP and make it official (or request changes). See the "Draft BEP review" point in the BIDS governance.

Yes, that's exactly what we are after now. It would be nice to be able to describe our effort as an official BEP (with a number, a link from the BIDS website, etc.) as we get more people onboard.
How can we ask @bids-standard/steering to review our BEP and make it official? (Is a ping on GitHub enough?)
Thank you!!

Is a ping on GitHub enough?

probably yes, but to be sure we can ask @franklin-feingold to also put it on the agenda for the next steering group meeting. He also publishes the meeting notes of these steering group meetings regularly on the webpage news section

I think it would be nice to

include in the description of this PR a list of TODO items which are yet to be done (or were already done and thus marked done)
create at least one demo dataset containing concrete example of provenance annotation.  since it most likely would be created automatically (i.e. by a tool) it might be worth targeting at least one (or a few) BIDS Apps and enhance them with ability to provide such annotation.

This BEP is now official: BEP028, see: https://github.com/bids-standard/bids-website/pull/123

Closing in favor of #487. @sappelhoff @franklin-feingold - if we can update the BEP028 PR link that would be great.

hey @satra - BEP028 from the website directs to your google doc currently - doesn't appear the PR was linked


Make postman collection for "Add endpoint for sql script db information"

https://azureford.sharepoint.com/sites/fordlabs/Members Only/Forms/AllItems.aspx?viewid=15439113-9858-48c2-89ce-f868f8ee3574&id=%2Fsites%2Ffordlabs%2FMembers Only%2FProducts%2FFLIP%2FPeopleMover%2FPostman

only exists in prod2


Form

Bikeshedding
open Batteries
module Id = String
module IdSet = Set.Make(Id)
type id = Id.t

Defining a language:

[x] v1

module%language L0 = struct
  type expr =
    [ `Var of id
    | `App of expr * expr list
    | `Lam of id list * expr
    | `Let of id * expr * expr ]
end

[ ] v2

module[@language] L0 = struct
  type expr =
    [ `Var of id
    | `App of expr * expr list
    | `Lam of id list * expr
    | `Let of id * expr * expr ]
end

[ ] v3

module%language L0 = struct
  type expr
    = Var of id
    | App of expr * expr list
    | Lam of id list * expr
    | Let of id * expr * expr
end

Extending a language:

"extends" syntax

[x] v1

module%language L1 = struct
  include L0
end

[ ] v2

module%language L1 = struct[@extends L0]
end

[ ] v3

module[@language extends L0] L1 = struct
end

Extending a language:

(add/remove forms)

[x] v1

module%language L1 = struct
  include L0
  type expr =
    { del : [ `App of expr * expr list
            | `Lam of id list * expr ]
    ; add : [ `App of expr * expr
            | `Lam of id * expr ] }
end

[ ] v2

module%language L1 = struct
  include L0
  type expr =
    [ `App of expr * expr list [@del]
    | `Lam of id list * expr [@del]
    | `App of expr * expr
    | `Lam of id * expr ]
end

Defining passes:

[ ] v1

module[@pass L0 ~> L1] Curry = struct
  let rec expr = function
    | `App (f, es) -> List.fold_left (fun e f -> `App (f, e)) f es
    | `Lam (xs, e) -> List.fold_right (fun x e -> `Lam (x, e)) xs e
end

[ ] v2

let[@pass L0 ~> L1] curry =
  { expr =
      function
      | `App (f, es) -> List.fold_left (fun e f -> `App (f, e)) f es
      | `Lam (xs, e) -> List.fold_right (fun x e -> `Lam (x, e)) xs e }

[ ] v3

module%pass Curry(_: L0) : L1 = struct
  let rec expr = function
    | `App (f, es) -> List.fold_left (fun e f -> `App (f, e)) f es
    | `Lam (xs, e) -> List.fold_right (fun x e -> `Lam (x, e)) xs e
end

Catamorphisms:
module IdSet = Set.Make(String)
module[@language L1'] = struct
  include L1
  type ExprVars = [ `EV of expr * IdSet.t ]
end

[ ] v1

module[@pass L1 ~> L1'] FVs = struct
  let (-) x s = IdSet.remove s x
  let (+) t s = IdSet.union t s
  let cat = List.fold_left (+) IdSet.empty

  let rec expr = function
    | `Var x ->
       `EV (IdSet.singleton x, `Var x)
    | `Lam (x, `EV (e', fvs) [@r]) ->
       `EV (fvs - x, `Lam (x, e))
    | `Let (x,
            `EV (e1', fvs1) [@r],
            `EV (e2', fvs2) [@r]) ->
       `EV ((fvs1 + fvs2) - x, `Let (x, e1', e2'))
    | `App (`EV (f', fvs) [@r],
            `EV (es', fvss) [@r_l]) ->
       `EV (fvs + cat fvss, `App (f', es'))
end

[ ] v2

module[@pass L1 ~> L1'] FVs = struct
  (* using [@cata] instead of [@r] *)
end

[ ] v3

module[@pass L1 ~> L1'] FVs = struct
  (* using '[%r/cata pat]' instead of 'pat [@r/cata]' *)
end

New pass variation:
let%pass only_sub L0 L1 =
  let rec expr = function
    | `Add (e1 [@r], e2 [@r]) ->
       `Sub (e1, `Sub(`Int 0, e2))
  in
  [%entry fun e -> expr e]

This has the advantage of

doesn't require entry points to be defined (not that they would be very difficult to define)
allows us to easily specify passing initial args to passes
that last expression wasn't previously doing us any good anyways

Q: How does it know which functions to apply the match%pass transformations to?


[BEAM-7859] set SDK worker parallelism to 1 in word count test

This does not affect the Flink runner because of its default behavior:
https://github.com/apache/beam/blob/c2f0d282337f3ae0196a7717712396a5a41fdde1/runners/flink/src/main/java/org/apache/beam/runners/flink/FlinkJobInvoker.java#L73-L75
However, I would like to make this explicit, because work must happen in a shared filesystem for this job to succeed.

Run Python PreCommit

Run Java PreCommit

Run Java PreCommit

Ping @angoenka -- this should be a no-op