|
import re |
|
|
|
import gradio as gr |
|
import torch |
|
from transformers import T5ForConditionalGeneration, RobertaTokenizer |
|
|
|
|
|
tokenizer = RobertaTokenizer.from_pretrained("mamiksik/CommitPredictorT5PL", revision="fb08d01") |
|
model = T5ForConditionalGeneration.from_pretrained("mamiksik/CommitPredictorT5PL", revision="fb08d01") |
|
|
|
|
|
def parse_files(patch): |
|
accumulator = [] |
|
lines = patch.splitlines() |
|
|
|
filename_before = None |
|
for line in lines: |
|
if line.startswith("index") or line.startswith("diff"): |
|
continue |
|
if line.startswith("---"): |
|
filename_before = line.split(" ", 1)[1][1:] |
|
continue |
|
|
|
if line.startswith("+++"): |
|
filename_after = line.split(" ", 1)[1][1:] |
|
|
|
if filename_before == filename_after: |
|
accumulator.append(f"<ide><path>{filename_before}") |
|
else: |
|
accumulator.append(f"<add><path>{filename_after}") |
|
accumulator.append(f"<del><path>{filename_before}") |
|
continue |
|
|
|
line = re.sub("@@[^@@]*@@", "", line) |
|
if len(line) == 0: |
|
continue |
|
|
|
if line[0] == "+": |
|
line = line.replace("+", "<add>", 1) |
|
elif line[0] == "-": |
|
line = line.replace("-", "<del>", 1) |
|
else: |
|
line = f"<ide>{line}" |
|
|
|
accumulator.append(line) |
|
|
|
return '\n'.join(accumulator) |
|
|
|
|
|
def predict(patch, max_length, min_length, num_beams, prediction_count): |
|
input_text = parse_files(patch) |
|
with torch.no_grad(): |
|
token_count = tokenizer(input_text, return_tensors="pt").input_ids.shape[1] |
|
|
|
input_ids = tokenizer( |
|
input_text, |
|
truncation=True, |
|
padding=True, |
|
return_tensors="pt", |
|
).input_ids |
|
|
|
outputs = model.generate( |
|
input_ids, |
|
max_length=max_length, |
|
min_length=min_length, |
|
num_beams=num_beams, |
|
num_return_sequences=prediction_count, |
|
) |
|
|
|
result = tokenizer.batch_decode(outputs, skip_special_tokens=True) |
|
return token_count, '\n'.join(accumulator), {k: 0 for k in result} |
|
|
|
|
|
iface = gr.Interface(fn=predict, inputs=[ |
|
gr.Textbox(label="Patch (as generated by git diff)"), |
|
gr.Slider(1, 128, value=40, label="Max message length"), |
|
gr.Slider(1, 128, value=5, label="Min message length"), |
|
gr.Slider(1, 10, value=7, label="Number of beams"), |
|
gr.Slider(1, 15, value=5, label="Number of predictions"), |
|
], outputs=[ |
|
gr.Textbox(label="Token count"), |
|
gr.Textbox(label="Parsed patch"), |
|
gr.Label(label="Predictions") |
|
], examples=[ |
|
[""" |
|
diff --git a/.github/workflows/pylint.yml b/.github/workflows/codestyle_checks.yml |
|
similarity index 86% |
|
rename from .github/workflows/pylint.yml |
|
rename to .github/workflows/codestyle_checks.yml |
|
index a5d5c4d9..8cbf9713 100644 |
|
--- a/.github/workflows/pylint.yml |
|
+++ b/.github/workflows/codestyle_checks.yml |
|
@@ -20,3 +20,6 @@ jobs: |
|
- name: Analysing the code with pylint |
|
run: | |
|
pylint --rcfile=.pylintrc webapp core |
|
+ - name: Analysing the code with flake8 |
|
+ run: | |
|
+ flake8 |
|
""", 40, 5, 7, 5], |
|
[""" |
|
diff --git a/packages/react-native-renderer/src/ReactFabricHostConfig.js b/packages/react-native-renderer/src/ReactFabricHostConfig.js |
|
index 078bf1f11ac6..b6d370882ae4 100644 |
|
--- a/packages/react-native-renderer/src/ReactFabricHostConfig.js |
|
+++ b/packages/react-native-renderer/src/ReactFabricHostConfig.js |
|
@@ -18,7 +18,10 @@ import type { |
|
TouchedViewDataAtPoint, |
|
} from './ReactNativeTypes'; |
|
|
|
-import {mountSafeCallback_NOT_REALLY_SAFE} from './NativeMethodsMixinUtils'; |
|
+import { |
|
+ mountSafeCallback_NOT_REALLY_SAFE, |
|
+ warnForStyleProps, |
|
+} from './NativeMethodsMixinUtils'; |
|
import {create, diff} from './ReactNativeAttributePayload'; |
|
|
|
import {dispatchEvent} from './ReactFabricEventEmitter'; |
|
@@ -52,6 +55,7 @@ const { |
|
unstable_DefaultEventPriority: FabricDefaultPriority, |
|
unstable_DiscreteEventPriority: FabricDiscretePriority, |
|
unstable_getCurrentEventPriority: fabricGetCurrentEventPriority, |
|
+ setNativeProps, |
|
} = nativeFabricUIManager; |
|
|
|
const {get: getViewConfigForType} = ReactNativeViewConfigRegistry; |
|
@@ -208,12 +212,14 @@ class ReactFabricHostComponent { |
|
|
|
setNativeProps(nativeProps: Object) { |
|
if (__DEV__) { |
|
- console.error( |
|
- 'Warning: setNativeProps is not currently supported in Fabric', |
|
- ); |
|
+ warnForStyleProps(nativeProps, this.viewConfig.validAttributes); |
|
} |
|
+ const updatePayload = create(nativeProps, this.viewConfig.validAttributes); |
|
|
|
- return; |
|
+ const {stateNode} = this._internalInstanceHandle; |
|
+ if (stateNode != null && updatePayload != null) { |
|
+ setNativeProps(stateNode.node, updatePayload); |
|
+ } |
|
} |
|
|
|
// This API (addEventListener, removeEventListener) attempts to adhere to the |
|
diff --git a/packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/InitializeNativeFabricUIManager.js b/packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/InitializeNativeFabricUIManager.js |
|
index abb2883d387e..ab4fc291d6d6 100644 |
|
--- a/packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/InitializeNativeFabricUIManager.js |
|
+++ b/packages/react-native-renderer/src/__mocks__/react-native/Libraries/ReactPrivate/InitializeNativeFabricUIManager.js |
|
@@ -117,6 +117,8 @@ const RCTFabricUIManager = { |
|
|
|
dispatchCommand: jest.fn(), |
|
|
|
+ setNativeProps: jest.fn(), |
|
+ |
|
sendAccessibilityEvent: jest.fn(), |
|
|
|
registerEventHandler: jest.fn(function registerEventHandler(callback) {}), |
|
diff --git a/packages/react-native-renderer/src/__tests__/ReactFabricHostComponent-test.internal.js b/packages/react-native-renderer/src/__tests__/ReactFabricHostComponent-test.internal.js |
|
index 337a4976bbe8..51e056d1c8bc 100644 |
|
--- a/packages/react-native-renderer/src/__tests__/ReactFabricHostComponent-test.internal.js |
|
+++ b/packages/react-native-renderer/src/__tests__/ReactFabricHostComponent-test.internal.js |
|
@@ -38,7 +38,7 @@ function mockRenderKeys(keyLists) { |
|
|
|
const mockContainerTag = 11; |
|
const MockView = createReactNativeComponentClass('RCTMockView', () => ({ |
|
- validAttributes: {}, |
|
+ validAttributes: {foo: true}, |
|
uiViewClassName: 'RCTMockView', |
|
})); |
|
|
|
@@ -200,21 +200,15 @@ describe('measureLayout', () => { |
|
}); |
|
|
|
describe('setNativeProps', () => { |
|
- test('setNativeProps(...) emits a warning', () => { |
|
+ test('setNativeProps(...) invokes setNativeProps on Fabric UIManager', () => { |
|
const { |
|
UIManager, |
|
} = require('react-native/Libraries/ReactPrivate/ReactNativePrivateInterface'); |
|
|
|
const [[fooRef]] = mockRenderKeys([['foo']]); |
|
+ fooRef.setNativeProps({foo: 'baz'}); |
|
|
|
- expect(() => { |
|
- fooRef.setNativeProps({}); |
|
- }).toErrorDev( |
|
- ['Warning: setNativeProps is not currently supported in Fabric'], |
|
- { |
|
- withoutStack: true, |
|
- }, |
|
- ); |
|
expect(UIManager.updateView).not.toBeCalled(); |
|
+ expect(nativeFabricUIManager.setNativeProps).toHaveBeenCalledTimes(1); |
|
}); |
|
}); |
|
diff --git a/scripts/flow/react-native-host-hooks.js b/scripts/flow/react-native-host-hooks.js |
|
index 584f24ee084c..e3c98114935f 100644 |
|
--- a/scripts/flow/react-native-host-hooks.js |
|
+++ b/scripts/flow/react-native-host-hooks.js |
|
@@ -186,7 +186,7 @@ declare var nativeFabricUIManager: { |
|
payload: Object, |
|
) => void, |
|
) => void, |
|
- |
|
+ setNativeProps: (node: Object, nativeProps: Object) => Object, |
|
dispatchCommand: (node: Object, command: string, args: Array<any>) => void, |
|
sendAccessibilityEvent: (node: Object, eventTypeName: string) => void, |
|
""", 40, 5, 7, 5] |
|
] |
|
) |
|
|
|
if __name__ == "__main__": |
|
iface.launch() |
|
|