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"{filename_before}") else: accumulator.append(f"{filename_after}") accumulator.append(f"{filename_before}") continue line = re.sub("@@[^@@]*@@", "", line) if len(line) == 0: continue if line[0] == "+": line = line.replace("+", "", 1) elif line[0] == "-": line = line.replace("-", "", 1) else: line = f"{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, input_text, {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) => void, sendAccessibilityEvent: (node: Object, eventTypeName: string) => void, """, 40, 5, 7, 5] ] ) if __name__ == "__main__": iface.launch()